输入一个数判断它是不是质数,如果不是质数,则显示该数字的质因数和每个质因数在唯一质因数分解中出现的次数,使用有关C++STL的知识
时间: 2024-04-30 08:21:15 浏览: 62
C++如何判断一个数字是否为质数
5星 · 资源好评率100%
可以使用STL中的unordered_map来记录每个质因数出现的次数,具体实现如下:
```c++
#include <iostream>
#include <unordered_map>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
int sqr = sqrt(n);
for (int i = 2; i <= sqr; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个正整数: ";
cin >> n;
if(isPrime(n)) {
cout << n << " 是质数" << endl;
} else {
unordered_map<int, int> primeFactors;
int sqr = sqrt(n);
for (int i = 2; i <= sqr && n > 1; i++) {
while (n % i == 0) {
primeFactors[i]++;
n /= i;
}
}
if (n > 1) primeFactors[n]++;
cout << "质因数分解结果: ";
for (auto p : primeFactors) {
cout << p.first << "^" << p.second << " * ";
}
cout << endl;
}
return 0;
}
```
首先判断该数是不是质数,如果是质数则直接输出;否则进行质因数分解,并使用unordered_map记录每个质因数出现的次数,最终输出每个质因数及其出现次数。
阅读全文