在C++中测试素数

Testing Primality in C++

本文关键字:测试 C++      更新时间:2023-10-16

谁能帮我?我正在尝试测试素数,但我似乎无法让它工作。无论出于何种原因,每当我运行它时,只要我从一个不是素数的数字开始,它就会运行良好。但是,在运行非素数的内容后,输出为"0 1",而不仅仅是 0。似乎如果我从一个不是素数的数字开始,一切都是"0 1"而不是正确的输出。

#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;
}

好吧,你有两次<<"1"的cout,你可能不是那个意思

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

分号位于错误的位置,因此不是说明应该执行的条件x<=num-1而是声明x<=num-1表达式只是计算而没有效果,然后在质数的情况下x递增直到

if(num%x==0)

是真的,因为实际上此时num==x。然后你打印你的"0",接下来你打印"1",因为

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

是真的。