int fact=1 放在for循环里面和外面的区别

#include <stdio.h>
int main ()
{
int n;
int i;
for(n=100;n>1;n--){**int fact=1;**
     for(i=2;i<n;i++)
{ if(n % i==0)
     {    fact=0;
    break;
 }
}
     if(fact==1){
printf("%d\n",n);
      }
  }


return 0;
}

int fact = 1; 放在for(n=100...)里面,起到一个标识的作用。每次不是素数的数,会break出里面的循环。到外层循环后,fact会重新变成1,就会不停的把素数打印出来。放在外面,执行到if(fact==1)时,fact的值始终为0,不会打印任何内容。所以必须放在里面才有效。