要学会独立思考!!!主要存在以下几个错误:
1、在主函数 main() 中调用了一个未声明的函数 Prime(),需要提前声明或将其实现放到 main() 函数后面。
2、在 for 循环中,设置 m 的每一次迭代是 m=m+2,这会漏掉所有的奇数,因此需要将其改成 m++。
3、在 cout 输出语句中,应该在输出素数后加上一个空格或其他分隔符,以便于区分每一个输出的素数。
改正后代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int Prime(int m);
int main() {
int m;
for (m = 2; m <= 99; m++) {
if (Prime(m)) {
cout << m << " "; // 输出素数后加上空格
}
}
return 0;
}
int Prime(int m) {
int i, k;
k = (int) sqrt(m); // 计算 m 的平方根
for (i = 2; i <= k; i++) {
if (m % i == 0) {
return 0;
}
}
return 1;
}
在上述代码中,我们添加了函数 Prime() 的声明,将 for 循环的迭代方式改成了 m++,以及在输出素数后添加了空格。同时,将函数 Prime() 的实现放到了 main() 函数后面。运行此程序后,会输出 2 3 5 7 11 ~ 97,满足要求。