为什么我的这部分代码总是返回值0

  • 本文关键字:返回值 代码 这部分 c
  • 更新时间 :
  • 英文 :


所以,我试图在c中制作一个eratosthenes筛的程序,但每个值都变成了0,具体来说,这是造成麻烦的部分,但我不知道出了什么问题

for (i = min; i <= max; ++i) {
if (checkprime(nums[i], i)) {
for (count = 2; i * count <= max; ++count) {
nums[(i-1) * count] = 0;
}
}
else nums[i] = 0;
}

这就是";checkprime";功能

int checkprime(int num,int count) {
for (count = count; count <= num / 2; ++count) {
if (num % count == 0) {
return 0;
break;
}
else {
return 1;
break;
}
}
}

显示如何制作筛子和提取素数的示例代码。

#include <stdio.h>
#include <stdlib.h>
#define LIMIT 100
int main(void) {
char *sieve = calloc(LIMIT, sizeof *sieve);
if(sieve == NULL) {
return 1;
}

for(int n = 2; n < LIMIT; n++) {
if(sieve[n] == 0) {             // found a prime
printf("%d ", n);
for(int i = n * n; i < LIMIT; i += n) {
sieve[i] = 1;           // mark off multiples
}
}
}
printf("n");

free(sieve);
return 0;
}

程序输出:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 

最新更新