一段求100-200之间素数及其个数的代码。前面for语句已经声明i
#include
int main()
{
int m,i,j=0;
for(m=100;m<=200;m++)
{
for(i=2;iif(m%i==0)
break;
if(i==m)
{
printf("%d ",m);
j++;
}
}
printf("\n");
printf("个数为%d",j);
return 0;
}
for(i=2;i<m;i++)
{
if(m%i==0)
break;
}
if(i==m)
{
printf("%d ",m);
j++;
}
}
你用 { } 把第 7 行的 for 循环标出来, 你就看到, 8,9 行就是循环体。
当这个循环走完,但是没有 break,这时候, i 的递增已经到达了 m, 那么
if (i == m)
就是说, 没有数字能够整除 m, 于是,这就是一个质数。
加上括号,缩进对齐就能看出来了,i==m是在第二个for的外面
#include<stdio.h>
int main()
{
int m,i,j=0;
for(m=100;m<=200;m++)
{
for(i=2;i<m;i++)
{
if(m%i==0)
break;
}
if(i==m)
{
printf("%d ",m);
j++;
}
}
printf("\n");
printf("个数为%d",j);
return 0;
}
里面那个for循环代码等价于以下代码
for (i = 2; i < m; i++)
{
if (m % i == 0)
break;
}
外面循环每执行一次,他会执行一次里面循环,如果到m-1也没有执行if(m%i==0)的话,执行完这个循环,把i++那个条件执行完后才会跳出去
第二个for循环省略了大括号, 只执行一条语句