int prime (int poss_prime);
int main() {
int poss_prime;
for (poss_prime = 2; poss_prime <= MAX_INT; poss_prime++) {
if (prime (poss_prime)) {
printf("%d ", poss_prime);
}
}
printf("\n\n");
return 0;
}
int prime (int poss_prime) {
int poss_factor;
for (poss_factor = 2; poss_factor <= poss_prime/2; poss_factor++) {
if (poss_prime % poss_factor == 0) {
return 0;
}
}
return 1;
}
不明白为什么if语句中可以用函数作为条件,for循环条件中为什么poss_prime要除以二。谢谢。
最佳答案
函数prime()
的返回类型是一个整数。将函数调用放在if语句中相当于
int value = prime(possprime);
if(value)
如果您随后不需要该返回值,那么这只是一种更简洁的方法。 C 中的逻辑表达式也接受数字参数。 0 为假,任何正整数为真。我不知道负整数的结果。
但是,如果您使用 bool 作为 prime 的返回类型,以明确这是一个真/假情况,那就更清楚了。
至于素数生成器本身:它正在检查该数字的所有因子。它的任何因数不能大于原始值的一半(不包括其自身),这就是为什么 for 循环仅到达可能的素数值的一半。
关于c - 请解释一下这个素数生成器代码是如何工作的(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676966/