#include<stdio.h> int main() { int i,m=200,k,temp=0; for(i=101;i<=m;i++){for(k=2;k<i;k++) {if(i%k!=0) {temp=1;break; } }if(temp==1)printf("%d ",i); } return 0; } 有错误吗
时间: 2024-02-10 11:08:38 浏览: 47
#include <stdio.h>
4星 · 用户满意度95%
上述代码有一个逻辑错误,因为它没有重置 `temp` 变量。因此,当 `temp` 的值为 `1` 时,下一次循环中 `temp` 的值仍然是 `1`,导致错误的输出结果。
以下是修改后的代码:
```c
#include <stdio.h>
int main() {
int i, m = 200, k;
for (i = 101; i <= m; i++) {
int temp = 0; // 重置 temp 变量
for (k = 2; k < i; k++) {
if (i % k == 0) {
temp = 1;
break;
}
}
if (temp == 0) {
printf("%d ", i); // 输出质数
}
}
return 0;
}
```
上述代码的输出结果是:`101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199`,即输出了 101 到 200 之间的所有质数。
阅读全文