质因子3-题解

描述

给定一个整数 N,找出它的所有质因子,并按如下格式输出:

N=p1a1×p2a2×…×pkak 注意: 如果 N=1 则输出 1=1。

在程序的实际输出时,p1a1写作:p1^a1。

其中 pk 是质因子,应按照递增顺序排列,ak 是 pk 的指数,如果 ak 为 1,则不必输出。

比如:如果N=100,那么输出:100=2^2*5^2。

再比如:如果N=20,那么输出:20=2^2*5。

输入描述

一个整数N。(N≤231-1)

输出描述

按题意输出分解结果。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <bits/stdc++.h>
using namespace std;

int main() {
long long n;
cin >> n;
long long tmp = n;
map<long long, int> m;
if (n == 1) {
cout << "1=1";
return 0;
}
for (long long i = 2; i * i <= n; i++) {
while (n % i == 0) {
m[i]++;
n /= i;
}
}
if (n > 1) {
m[n]++;
}
cout << tmp << "=";
bool first = true;
for (auto &i : m) {
if (!first) {
cout << "*";
}
first = false;
if (i.second > 1) {
cout << i.first << "^" << i.second;
} else {
cout << i.first;
}
}
return 0;
}

质因子3-题解
https://chenxi-tijie.pages.dev/2025/07/质因子3-题解/
作者
chenxi
发布于
2025年7月5日
许可协议