【发布时间】:2021-03-20 00:42:37
【问题描述】:
我正在尝试使用以下代码打印素数:
#include <stdio.h>
int prime_check(int number);
int main(){
int x;
printf("Number of choice\n");
scanf("%d",&x);
prime_check(x);
return 0;
}
int prime_check(int number){
int count = number;
for (number>=0; count>=0; --number ){
for (number>=0; count>=0; --count){
if (number % count !=0){
printf("# %d\n ",&number);
}
}
}
return number;
}
以下是无论输入我得到的输出:# 6422272
作为一名自学者,我希望能够获得任何您认为适合上述问题以及我在 C 方面所走的道路的相关指导。
提前谢谢你
【问题讨论】:
-
欢迎来到 SO。循环的初始化部分没有意义。
number>=0;应该是什么意思?提示:它没有! -
你的函数应该如何工作?返回值的含义是什么?输出的意义是什么?此外,您应该在编译器中启用更多警告。对于 GCC,请使用
-Wall -Wextra。这应该会导致一些关于printf("# %d\n ",&number);中参数类型不匹配的警告这可能应该是printf("# %d\n ",number);但整个打印与素数根本无关。 -
您的内循环一直运行到
count==0,这在if (number % count != 0)中使用时会导致问题。 -
附带说明:在不检查返回值的情况下使用
scanf是不安全的。有关详细信息,请参阅此页面:A beginners' guide away from scanf() -
您的意思是使用sieve of Eratosthenes?您需要分配更多内存。
标签: c loops for-loop primes function-definition