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

C++编写3到300质数查找代码报operator+不匹配错误如何解决

问题原因分析
  • 直接触发编译报错的核心原因:你代码中prime = prime + i + " ";这行尝试直接对std::string类型变量和int类型变量执行+运算,C++标准库没有提供对应运算符重载,因此编译器抛出no match for 'operator+'的错误。
  • 除此之外你的代码还存在两处隐含编译问题:
    • 缺少依赖头文件:使用std::string需要引入<string>头文件,使用std::cout需要引入<iostream>头文件
    • 未指定标准库命名空间:你代码中直接写的string、cout都属于std命名空间下的组件,要么在使用前加std::前缀,要么在代码开头加using namespace std;声明。
修复方案

将int类型的i通过std::to_string方法转为字符串类型后再做拼接,同时补全头文件和命名空间声明即可,修复后完整代码如下:

#include <iostream>
#include <string>

int main() {
    int i = 0;
    int num = 0;
    std::string prime = "";
    
    for (i = 3; i <= 300; i++) {
        int counter = 0;
        for (num = i; num >= 1; num--) {
            if (i % num == 0) {
                counter = counter + 1;
            }
        }
        if (counter == 2) {
            // 转换int为string后再拼接
            prime = prime + std::to_string(i) + " ";
        }
    }
    std::cout << "Prime numbers: ";
    std::cout << prime;
    return 0;
}
可选优化提示

你的质数判断逻辑可以优化,内层循环不需要遍历到1,仅需要遍历到sqrt(i)即可,可大幅降低不必要的计算量,该优化不影响编译正确性,仅提升运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:24:02