#include<stdio.h>
int main()
{
int i,j=0,t;
for(i=100;i<=200;i++)
{
/* 这为什么 t<i 或者 t<=i 都不影响结果呢
答: 这个 for 是用来判断 i 是不是质数的。
首先我们来看【 t<i 】的情形,也就是说 t∈[2,i-1],
我们来看看这个【 for 语句结束的时候,t 的值是多少】。
a. 如果 i 是质数,那么 if(i%t == 0) 在 t=[2,i-1] 都不成立。
for 语句在 t==i 是结束。
b. 如果 i 是合数, 那么 if(i%t == 0) 在 t=[2,i-1] 内的某一个数会成立,然后跳出循环。
for 语句结束的时候, 2 <= t <= (i-1)。
接着我们来看【 t<=i 】的情形,也就是说 t∈[2,i],
我们来看看这个【 for 语句结束的时候,t 的值是多少】。
a. 如果 i 是质数,那么 if(i%t == 0) 在 t=[2,i-1] 都不成立。
当 t==i 时候,if(i%t == 0) 一定会成立,跳出循环。
b. 如果 i 是合数, 那么 if(i%t == 0) 在 t=[2,i-1] 内的某一个数会成立,然后跳出循环。
for 语句结束的时候, 2 <= t <= (i-1)。
【结论】:不管【 t<i 】的情形,还是【 t<=i 】的情形,
如果 i 是质数,那么:【 for 语句结束的时候,t 的值都是 i】。
如果 i 是合数,那么:【 for 语句结束的时候,t 的值都大于 2 小于 i 的】。
*/
for(t=2;t<=i;t++)
if(i%t==0) break;
// 根据结论,不管 for(t=2;t<=i;t++) 还是 for(t=2;t<i;t++),
// 都可以通过 if(t==i) 成立,来判断 i 是质数。
if(t==i)
{
j++;
// 这里我给你优化了一下
printf("%d%s",i,(j%10 ? " " : "\n"));
}
}
}
温馨提示:内容为网友见解,仅供参考