#include <stdio.h> int isprime(int n); int main() { int m,ret; scanf("%d",&m); ret=isprime(m); printf("%d",ret); return 0; } int isprime(int n) { int i,c=0; for(i=2;i<=n;i++); { if(n%i==0) { return 1; } } if(i>n) return 0; }
时间: 2023-12-02 17:06:24 浏览: 58
这段代码中存在一些问题,主要是在isprime函数中:
1. for循环的语句块后面多了一个分号,导致for循环并没有执行任何操作。
2. 在for循环外面的if语句中只返回了一个固定的值1,没有返回判断结果,应该返回非质数的判断结果。
下面是修改后的代码:
```
#include <stdio.h>
int isprime(int n);
int main() {
int m, ret;
scanf("%d", &m);
ret = isprime(m);
printf("%d", ret);
return 0;
}
int isprime(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
if (i > n / 2) {
return 1;
}
}
```
修改后的代码中,for循环语句块的分号被去掉了,if语句中返回了非质数的判断结果0,函数返回了质数的判断结果1。
阅读全文