C++打印小于等于输入值的质数,现有代码输出错误如何解决?
C++打印指定范围内质数问题修复
原代码核心问题
- 逻辑判断对象错误:当前代码仅判断输入值
getNumber能否被遍历变量i整除,而非判断i本身是否为质数,这是结果不符合预期的核心原因 - 质数判断逻辑缺失:判断单个数值是否为质数需要遍历检查该数值的所有可能因子,仅单次模运算无法得出正确结论
prime变量状态未正确重置:每次判断新的数值前,需要先将质数标记默认设为true,找到因子后再改为false,原代码的赋值逻辑完全颠倒
修正后完整实现代码
#include <iostream> #include <cmath> using namespace std; int main() { int getNumber = 0; cout << "请输入一个整数:"; cin >> getNumber; for (int i = 2; i <= getNumber; ++i) { bool isPrime = true; // 检查到平方根即可覆盖所有可能的因子,提升运行效率 for (int j = 2; j <= sqrt(i); ++j) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { cout << i << " "; } } cout << endl; return 0; }
运行验证
输入13时,输出结果为2 3 5 7 11 13,完全符合预期要求。
内容的提问来源于stack exchange,提问作者emotionalEE
相关产品推荐
相关产品推荐

