素数检查错误c ++

时间:2016-09-25 21:44:17

标签: c++

我已经编程了java一段时间了,我刚刚开始使用c ++。 我决定制作一个素数检查器,但由于某种原因,如果它不是素数,它就不会打印出来。

#include <iostream>

using namespace std;

int prime;

int main()
{
  while(true)
  {
    int primeChecker;
    cout << "Enter a number to check if it is prime" << endl;

    cin >> prime;

    for(int i = 2; i <= (1/2)*prime; i++){
        cout << "Working" << endl;
        if(prime % i == 0){
            cout << "This number is not prime" << endl;
            primeChecker+=1;
        }
    }
    if(primeChecker == 0){
      cout << "This number is prime" << endl;
    }
    }
    return 0;

}

1 个答案:

答案 0 :(得分:2)

你需要用0初始化primechecker。同时写i&lt; = prime / 2而不是i&lt; =(1/2)prime。当你发现数字不是素数时,你应该再次使用break。你还需要检查1.我认为这是你试图写的 -

#include <iostream>

using namespace std;

int prime;

int main()
{
    while(true)
    {
        int primeChecker=0;
        cout << "Enter a number to check if it is prime" << endl;
        cin >> prime;
        if(prime==1)
        {
            cout << "This number is not prime" << endl;
        }
        else
        {
            for(int i = 2; i <= prime/2; i++)
            {
                cout << "Working" << endl;
                if(prime % i == 0)
                {
                cout << "This number is not prime" << endl;
                primeChecker+=1;
                break;
                }
            }
            if(primeChecker == 0)
            {
                cout << "This number is prime" << endl;
            }
        }
    }
    return 0;
}

此代码将花费更多时间来处理更大的值。我建议你检查素数的平方根,以确认该数字是否为素数。祝你好运!