程序改错,请将程序中的错误改正过来。本程序的功能是输出2~99之间的全部素数。

img


程序改错,请将程序中的错误改正过来。本程序的功能是输出2~99之间的全部素数。

要学会独立思考!!!主要存在以下几个错误:
 
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,满足要求。