#include <iostream>
using namespace std;
#include <cmath>
const int maxn = 1000010;
struct factor{
int m = 0,cnt = 0;
};
factor p[maxn];
int main()
{
int k = 2;//第一个素数
int x;
int e = 1;//用于计算累积乘的结果,来控制*号的输出
cin >> x;
int t = x;//找质因子的过程会把改变x,这里备份一个用于输出格式
if(x == 1){//如果为输入为1直接结束程序
cout << x << "=" << 1;
return 0;
}
while(x > 1){//质因数
if (x % k == 0){
x = x / k;
p[k].m = k;
p[k].cnt++;
}
else k++;
}
cout << t << "=";
//以下为控制输出格式
for(int i = 0; i < maxn; i++){
if(p[i].cnt != 0){
e =pow(p[i].m, p[i].cnt) * e;
if(e < t){
if(p[i].cnt > 1) cout << p[i].m << "^" << p[i].cnt << "*";
else if(p[i].cnt == 1) cout << p[i].m << "*";
}
else {
if(p[i].cnt > 1) cout << p[i].m << "^" << p[i].cnt;
else if(p[i].cnt == 1) cout << p[i].m;
}
}
}
return 0;
}
PAT A1059 Prime Factors 质因数
最新推荐文章于 2024-06-02 15:09:17 发布