0
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循环条件中被二除。谢谢你。

4

2 回答 2

2

该函数prime()的返回类型为整数。将函数调用放在 if 语句中相当于

int value = prime(possprime);
if(value)

如果您随后不需要该返回值,这只是一种更简洁的方式。C 中的逻辑表达式也接受数字参数。0 为假,任何正整数为真。我不知道负整数的结果。

但是,如果您使用 bool 作为素数的返回类型,会更清楚地表明这是一个真/假的情况。

至于素数生成器本身:它正在检查该数字的所有因素。它不能有任何因子大于原始值的一半(不包括它自己),这就是为什么 for 循环只达到可能素数的一半。

于 2012-05-20T20:53:02.690 回答
0

基础编程。

该函数prime返回 1 或 0,具体取决于它找到的内容。在 C 中,0 表示“假”,1 表示“真”。

再除以 2,如果这个数有任何因数,它必须是这个数的一半或更少,因为最小的可能因数是 2。

于 2012-05-20T20:38:07.833 回答