对循环语句条件的提问

一段求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循环省略了大括号, 只执行一条语句