#include <stdio.h> #include <string.h> int main( ) { int a[100],i,j,index; for(i=0;i<100;i++) a[i]=i+1; for(j=0;j<100;j++) { index=0; for(int k=2;k<=j;k++) { if(a[j]%k==0) index=1; break; } if(index=0) printf("%d-5d",a[j]); } return 0; }
时间: 2023-12-07 22:06:07 浏览: 64
这段代码的作用是输出1到100之间的所有质数。但是代码中有一些错误,我来指出一下:
1. 第6行应该是 `a[i]=i+2;`,而不是 `a[i]=i+1;`,因为我们从2开始判断质数。
2. 第11行中的 `int k` 应该写在 for 循环的外面,否则会报错。
3. 第15行中的 `if(index=0)` 应该改为 `if(index==0)`,因为 `=` 是赋值运算符,而 `==` 才是相等运算符。
4. 第16行应该加上花括号,因为 if 语句中的语句块有两句,不加花括号会导致只有第一句语句被 if 语句控制。
5. 第17行的输出格式应该是 `%d\t`,而不是 `%d-5d`,因为 `-5d` 的意思是左对齐并补充空格到5位,这显然不是我们想要的输出格式。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
int a[100], i, j, index;
for(i = 0; i < 100; i++)
a[i] = i + 2;
for(j = 0; j < 100; j++) {
index = 0;
for(int k = 2; k <= a[j] / 2; k++) {
if(a[j] % k == 0) {
index = 1;
break;
}
}
if(index == 0)
printf("%d\t", a[j]);
}
return 0;
}
```
这样就可以正确地输出1到100之间的所有质数了。
阅读全文