✏️ 纠错
第 194 题 / 共 251 题
第3题 下面的C++代码用于输出每个数对应的质因数列表,输出形如:{5: [5], 6: [2, 3], 7: [7], 8: [2, 2, 2]}。
int main() {
    int n, m;
    cin >> n >> m;
    if (n > m) swap(n, m);

    map<int, vector<int>> prime_factor;

    for (int i = n; i <= m; ++i) {
        int j = 2, k = i;
        while (k != 1) {
            if (k % j == 0) {
                prime_factor[i].push_back(j);
                k /= j;
            } else {
                ++j;
            }
        }
    }

    for (auto& p : prime_factor) {
        cout << p.first << " : ";
        for (int v : p.second)
            cout << v << " ";
        cout << endl;
    }

    return 0;
}
📝 题目解析

答案:×

知识点:质因数分解的算法实现,列表的正确操作方法

解析:代码中prime_factor[i] = prime_factor[i] + j是错误的,数组不能直接与整数相加,正确写法应为prime_factor[i].push_back(j)。因此代码无法正确输出质因数列表。