以下是引用shixiaochi在2012-1-16 04:32:53的发言:
#include
int main(void)
{
int i,j;
for(i=1;i<=20;i++) // i 初始化为1
{
for(j=2;j<=i;j++) //到 j = 2;执行完之后 i++执行 结果变为i == 2 (这么改对吗?)
{
if(i%j==0)
break;
}
if(j==i)
printf("素数有:%d\n",i);
}
}
我是个初学者,我分析了这个算法也没错啊,因为自己电脑坏了,使别人电脑,没编译器所以不能试
#include
int main(void)
{
int i,j;
for(i=1;i<=20;i++)
// i 初始化为1
{
for(j=2;j<=i;j++)
//到 j = 2;执行完之后 i++执行 结果变为i == 2
(这么改对吗?)
{
if(i%j==0)
break;
}
if(j==i)
printf("素数有:%d\n",i);
}
}
我是个初学者,我分析了这个算法也没错啊,因为自己电脑坏了,使别人电脑,没编译器所以不能试
//就这题来讲,比如j从2开始的,那么当i<2的时候,都是不执行第二个嵌套循环,当i=2的时候,判断j<=2,那么i%j==0成立,break执行下一句,因为素数只能被1和自身整除,所以如这题,在1,2....20中,如果有i/j能被整除,当j<i的时候,除开1和本身有能整除i的数,就不是素数了,当i==j的时候,说明,只有1和i自身能整除,所以是素数,因为任何数都能被1整除,所以j从2开始。我是这样理解的,不晓得你看的明白不