我正在试着做一个程序来检查一个给定的数字是否是质数。然而,我的程序只给了我两个时间表,我不知道为什么。
这是我的主课:
#include <stdio.h>
#include "defs.h"
#include "checkprime.c"
int Prime[MaxPrimes];
int main()
{
int UpperBound;
int N;
int *ba = &UpperBound;
printf("enter upper bound\n");
scanf("%d",ba);
Prime[2] = 1;
for (N = 3; N <= *ba; N+= 2)
{
CheckPrime(N);
if (Prime[N]== 1) printf("%d is a prime\n",N);
}
}
这是我的支票
#include "defs.h"
#include "externs.h"
int CheckPrime(int K)
{
int J;
J = 2;
while (1)
{
if (Prime[J] == 1)
{
if (K % J == 0)
{
Prime[K] = 0;
return 0;
}
J++;
}
break;
}
Prime[K] = 1;
}
最佳答案
循环退出条件下存在着一些问题。请改为使用以下内容:
int CheckPrime(int K)
{
int J;
for (J=2; J*J <= K; J++) {
if (Prime[J] == 1) {
if (K % J == 0) {
Prime[K] = 0;
return 0;
}
}
}
Prime[K] = 1;
return 1;
}
剩下的部分应该能适应这种变化。
关于c - 我的Checkprime.c程序怎么了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35486705/