✏️ 纠错
第 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)。因此代码无法正确输出质因数列表。