确实,上面的程序有一些问题,导致无法正确输出质数。

问题在于变量'm'的赋值位置不正确,导致每次外层循环都没有重新初始化为1,导致后续的判断始终为0。此外,在判断质数时,应该从2到i-1进行除法运算,而不是计算i的平方根进行判断。

下面是修正后的程序:

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int i, j;
    bool isPrime;

    for (i = 2; i <= 100; i++)
    {
        isPrime = true;

        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                isPrime = false;
                break;
            }
        }

        if (isPrime)
        {
            cout << i << '是质数' << endl;
        }
    }

    system("pause");
    return 0;
}

在修正后的程序中,使用了两个循环嵌套,外层循环遍历2到100之间的数,内层循环从2到i-1判断是否能整除i。如果找到了一个除数,即i % j == 0,那么isPrime被设置为false,并跳出内层循环。如果内层循环结束后isPrime仍然为true,说明i是质数,输出结果。

非常抱歉给您带来了困惑,请使用修正后的代码进行尝试。如果有任何问题,请随时告诉我。

C++ 质数判断程序错误解析及修正

原文地址: https://www.cveoy.top/t/topic/bsVK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录