使用C ++查找整数的素数

时间:2016-06-28 08:20:46

标签: c++

编写C ++算法来测试素数。我的C ++代码如下

#include<iostream>
#include<cmath>

using namespace std;

int x,n;
bool isprime(int);

int main()
{
    cout<<"Enter prime no"<<endl;
    cin>>x;
    for (n=2;n<=floor(sqrt(x));n++)
    {
        if (x==1)
            cout<<"not prime"<<endl;
        else if (x%n==0)
            cout<<"is not prime"<<endl;
        else
            cout<<"prime"<<endl;
    }
}

但是当我运行程序时,我的输出似乎不正确,例如我继续得到&#34;是素数&#34;当答案显然不是素数时。

else if (x%n==0)
cout<<"is not prime"<<endl;

部分声明似乎无法正确执行。有人可以向我解释我的代码有什么问题。感谢

2 个答案:

答案 0 :(得分:2)

你的循环输出&#34;素数&#34;对于x的每个非除数。你应该在第一个&#34; not prime&#34;之后终止循环。点击并且仅输出&#34; prime&#34;如果循环没有终止。

答案 1 :(得分:1)

根据Udo Klein的建议,当检测到数字不是素数时,你应该突破循环。此外,无需检查x是否等于循环内的一个。

#include<iostream>
#include<cmath>

int main()
{
    int x;
    std::cout << "Enter prime no" << std::endl;
    std::cin >> x;

    if (x == 1)
    {
        std::cout << "not prime" << std::endl;
        return 1;
    }

    for (int n = 2; n <= floor(sqrt(x)); n++)
    {
        if (x % n == 0)
        {
            std::cout << "is not prime" << std::endl;
            return 1;
        }
    }
    std::cout << "prime" << std::endl;
    return 0;
}