以NextPrime函数中while来区别或和并的使用,或表示两个条件有一个为真就需要进行循环,此处只要不是素数或者不是4k+3的序列中的数就要继续循环。并表示两者都为真的时候才进行循环(只要一个为假就立即退出循环),此处如果i是素数的话,第一个条件就为假,则会退出循环,这就不满足需要i还是4k+3序列中的数的要求。
int IsPrime(int n)
{
int i;
if (n <= 1)
return 0;
for (i = 2; i <= sqrt(n); ++i)
if (n%i == 0)
return 0;
return 1;
}
int NextPrime(int n)
{
int i = n - 1;
if (n <= 2)
{
printf("Error");
}
else
{
while (IsPrime(i) == 0 || (i-3)%4 != 0)
--i;
}
return i;
}
关注我获取更多编程方面的知识,和我共同进步吧~