【发布时间】:2013-10-09 00:03:16
【问题描述】:
我需要创建一个在两个输入数字之间生成素数的函数。我通过测试范围内每个数字的素数来做到这一点。问题是数字 3、5 或 7 从不显示。我不确定出了什么问题。
这就是我测试数字素数的方法:
bool isPrime(int number){
using namespace std;
if((number%2==0) || (number%3==0) || (number%4==0) || (number%5==0) ||
(number%6==0) || (number%7==0) || (number%8==0) || (number%9==0))
{
return false;
}
else if ((number/1==number) && (number/number==1))
{
return true;
}
}
【问题讨论】:
-
我可以马上告诉你,这不是找到素数的正确代码
-
您的代码几乎等同于仅列出您范围内的所有素数并检查输入是否是其中之一。不要偷懒,请创建一个实际的素性测试。另外,
(number/1==number) && (number/number==1)毫无意义。 -
简单。因为
3 % 3是0,并且由于条件中有(number%3==0),所以该函数的输出是false。 -
您是否在两个输入数字之间的每个数字上调用 isPrime?即便如此,即使 3 是素数,isPrime(3) 也会返回 false...
-
isPrime(2)也会返回false,即使 2 是素数。所以不只是 3、5 和 7。