关于循环的一个问题 急
#include<stdio.h>#include<math.h>
main()
{
int m=100;
int k,i,d,n=0;
for (m=101;m<=200;m=m+2)
{
k=sqrt(m);
for (i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
{
printf("%d",m);
n=n+1;
}
if(n%10==0)
printf("\n");
}
printf("\n");
}
输出100-200内的所有素数,结果显示为:
101 103 107 109 113 127 131 139 149
151 163 167 173 179 181 191 193 197
199
此为正确答案。
但是若在 for (i=2;i<=k;i++)
if(m%i==0) break;之间插入 d==m%i;
101 103 105 107 109 111 113 115 117 119
121 123 123 127 129 131 133 135 137 139
... 159
161 省略 179
181.... 199
若插入 d==m%i;同时将if(m%i==0) break;改成if(d==0) break;后结果为:
101 103 105 107 109 111 113 115 117 119
前辈们给我解释下 这是为什么呢?我是初学者,用的是谭浩强老师的书,前五章还好学,但循环时就有点吃力了,不理解呀。