#include<stdio.h>
int main()
{
int m,n;
for(m=2;m<=100;m++)
{
for(j=2;j<=i;j++)
if(m%n==0)
break;
if(m==n)
printf("%d%t",m);
}
printf("\n");
return 0;
}
以前根据程序来读总以为for()(暂且称为for1)内嵌的for()(称为for2)和for1是一一对应,同步进行的。拿上面的程序为例,错误的认为当for1的m=2时 for2的n也等于2,以此类推,当for1的m等于50时,for2的m也等于50。但是按照此看法来读这个程序会发现根本读不下去。因为在此种情况下m的值永远等于n,当然也无法打印出所有的质数。
仔细的想了想,觉得这个for和内嵌for之间的关系可以这样理解:for1代表一个集合,for2代表一个集合,就像中学学的映射一样。for1的每个元素都能在for2中找到与之相对应的关系。即for1的每种情况,for2的每种处理方式都会处理一遍。