You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++查找给定范围最后一个质数并在打印后跳出循环

查找给定范围最大质数的代码修正方案

核心修改点

  • 调整prime_bef函数的返回值类型为bool,不再在函数内部直接输出结果,判断为质数时返回true,否则返回false,避免无效输出。
  • 在main函数的倒序遍历逻辑中,只要检测到prime_bef返回true,就输出当前数值,再调用break直接终止遍历,停止后续判断。
  • 可选优化质数判断逻辑:将判断因数的遍历上限改为sqrt(n),大幅减少不必要的循环次数,提升执行效率。

修改后的完整代码

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

bool prime_bef(int n)
{
    // 小于2的数肯定不是质数
    if (n < 2) {
        return false;
    }
    // 遍历到平方根即可,超过平方根的因数必然和前面的小因数成对出现
    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0)
        {
            // 存在除了1和自身之外的因数,不是质数
            return false;
        }
    }
    return true;
}

int main ()
{
   int l; 
   int u;
   cin >> l >> u;

   for (int i = u; i >= l; i--)
   {
      if (prime_bef(i)) {
          cout << i << endl;
          // 找到第一个质数直接终止循环
          break;
      }
   }

   return 0;
}

逻辑说明

代码按照你设想的倒序遍历逻辑执行,从范围上限开始逐个判断是否为质数,第一个匹配的就是范围内最大的质数,找到后立刻终止遍历,不会执行多余的判断步骤。

内容的提问来源于stack exchange,提问作者NerdNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:39:00