Q.如題,我想要求一個大於n的最小質數,但最後為什麼出來的答案不如預期呢?
以下是代碼:
int NextPrime(int n) {
bool notPrime = true;
int j;
int i;
while (notPrime) {
i = n + 1; i++;
for ( j = 2; j <= i; j++) {
if (i%j == 0) { break;};
return i;
notPrime = false;
}
}
}
int main()
{
cout << NextPrime(7) << " ";
return 0;
}
獲得結果:
9
但是9不是質數阿...請大神解惑!
因为你的代码写的几乎没一个地方是对的。
想要找出大于n的质数,从n+1循环遍历到n+m,以及判断n+m是否是质数。
首先第一个
和
有什么区别,假设我这里输入的是12,13就直接给你跳过了。所以,i++应该放在while循环的最后,而且,i = n + 1应该while循环的外面,要不是你的判断写的有问题,就直接死循环了。
以及你这里notPrime是什么意思,在这里完全没有意义。
之后就是return i,只要任意i%j != 0,你就直接return i了。所以综合上面的i = n + 2,你这里才会直接输出9