C++ 质数判断程序错误解析及修正
确实,上面的程序有一些问题,导致无法正确输出质数。
问题在于变量'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是质数,输出结果。
非常抱歉给您带来了困惑,请使用修正后的代码进行尝试。如果有任何问题,请随时告诉我。
原文地址: https://www.cveoy.top/t/topic/bsVK 著作权归作者所有。请勿转载和采集!