程序为某些条目提供了错误的输出!怎么了?

program gives me wrong output for some entries! What's wrong?

本文关键字:错误 输出 怎么了 程序      更新时间:2023-10-16

所以这里有代码:

#include <iostream>
using namespace std;
bool prime(int);
int main() 
{
    int x;
    cout<<"Enter your number: ";
    cin>>x;
    if(prime(x) == true)
        cout<<"Number is prime";
    if(prime(x) == false)
        cout<<"Number is not prime";
    return 0;
}
bool prime(int number)
{
    for(int i=2; i<number;i++)
    {
        if(number%i==0)
            return false;
        if(number%i!=0)
            return true;
    }
}

该程序适用于所有素数(至少适用于我尝试过的那些!)但对于一些复合物,它说:数字不是素数!我在哪里犯了错误?

prime函数应如下

bool prime(int number)
{
   for(int i=2; i*i<number;i++) //Only till square root is enough.
   {
       //For any number which is divisible, return false.
       if(number%i==0)
           return false;
   }
   //Else, divisible by no one is prime.
   return true;

}

在这部分使用else。

if(prime(x) == true)
    cout<<"Number is prime";
else
    cout<<"Number is not prime";

无需对同一函数调用两次。

复合物不是素数,所有非素数都会发出"Number is not Prime"

但你需要修改你的代码:

bool prime(int number)
{
    for(int i=2; i<number;i++)
    {
        if(number%i==0)
            return false;
    }
    return true;
}

您只能在所有非素数测试失败后判断数字是否为素数