我用C编写了程序,用Eratosthene的筛子寻找素数(这是Kochan的6-8练习,C第4版的编程)。工作挺好的。
#include <stdio.h>
int main(void) {
int prime[151], i, j;
for(i = 2; i < 151; ++i)
prime[i] = i;
for(i = 2; i <= 150; ++i)
if(prime[i])
for(j = i+i; j <= 150; j += i)
prime[j] = 0;
for(i = 2; i < 150; ++i)
if(prime[i])
printf("%i ", prime[i]);
printf("\n");
return 0;
}但是在我到达这种形式的代码之前,我尝试一下for循环:
for(i = 2; prime[i] && i < 150; ++i)这种形式逐点保存,if语句,在我看来,需要以类似于第一个变量的方式工作。但在3号之后就停止了!有人能解释一下为什么for循环中的条件是这样工作的吗?
是的,我知道这个程序的算法不是最好的。
发布于 2014-12-13 17:41:08
不,它们不一样:
prime[i]将成为false,循环将停止)。发布于 2014-12-13 17:51:03
for循环的中间部分类似于while,而不是if。因此,一旦找到prime[i]为0的位置并进行索引,循环就会终止。
https://stackoverflow.com/questions/27461747
复制相似问题