为什么第一个运行结果只有两个,但是第二个可以有很多个?
#include <stdio.h>
#define MAX 200int main() {
int i,n,cnt=0;
for (n=2;n<MAX;n++) {
for (i=2;i<n;i++)
if (n%i==0) cnt++;
if (cnt==0) printf("%5d",n);
}
return 0;}
第二个
#include <stdio.h>
#define MAX 200
int main() {
int i,n,cnt=0;
for (n=2;n<MAX;n++) {
for (i=2;i<n;i++)
if (n%i==0) break;
if (i==n) printf("%5d",n);
}
return 0;}
第一块代码的cnt每次都需初始化为0,否则会沿用上一次的值,只要++一次就出问题了
#include <stdio.h>
#define MAX 200
int main() {
int i,n,cnt=0;
for (n=2; n<MAX; n++) {
//cnt每次都要初始化
for (i=2,cnt = 0; i<n; i++)
if (n%i==0) cnt++;
if (cnt==0) printf("%5d",n);
}
return 0;
}