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语句中的条件,以及为什么poss_prime在for循环条件中除以2。谢谢。
答案 0 :(得分:2)
函数prime()
的返回类型为整数。将函数调用放在if语句中等同于
int value = prime(possprime);
if(value)
如果您之后不需要返回值,那么这只是一种更简洁的方式。 C中的逻辑表达式也接受数字参数。 0为假,任何正整数都为真。我不知道负整数的结果。
但是,如果你使用bool作为素数的返回类型,它会更清楚,以明确这是一个真/假的情况。关于素数发生器本身:它正在检查该数字的所有因素。它不能有任何大于原始值一半的因子(不包括它自己),这就是为什么for循环只能达到可能的素数值的一半。
答案 1 :(得分:0)
基础编程。
函数prime
返回1或0,具体取决于它找到的内容。在C中,0表示“假”,1表示“真”。
除以2,如果有任何数字因子,它必须是数字的一半或更少,因为最小的可能因子是2.