用C ++测试Primality

时间:2014-02-24 19:26:08

标签: c++

任何人都可以帮助我吗?我试图测试素性但我似乎无法让它工作。无论出于何种原因,每当我运行它时,只要我从一个不是素数的数字开始,它就会正常运行。然而,在运行非素数之后,输出为“0 1”而不是0。似乎如果我从一个不是素数的数字开始,一切都是“0 1”而不是正确的输出。 / p>

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cmath>

int main()
{
    int num;
    int x = 2;
    //cin >> num;
    while(cin >> num)         //(x<=num-1) 
    { 

        for(x<=num-1; x++;)
        {
            if(num%x==0)
            { 
                cout << "0" << endl ; //1 is prime, 0 is not prime
                break; 
            }

            if(x==num)
            {
                cout << "1" << endl ;
                break; 
            }
        }

        if(x==num)
        {
            cout << "1" << endl ;
        }

    }

    return 0;
}

2 个答案:

答案 0 :(得分:1)

你有cout&lt;&lt; “1”两次,你可能并不是那个意思

答案 1 :(得分:0)

for(x<=num-1; x++;)

分号位于错误的位置,因此不是声明执行应该发生的条件x<=num-1,而是声明x<=num-1表达式只是在没有效果的情况下进行评估,然后在素数的情况下{ {1}}递增,直到

x

是真的,因为事实上if(num%x==0) 就此而论。然后打印'0',然后打印'1',因为

num==x

是真的。