#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int nextp() {
static int flag[65536] = {};
static int p = 1;
while((++p) < 65536 && flag[p]) ;
if(p == 65536)
return 0;
for(int i = 2; i*p < 65536; i ++)
flag[i*p] = 1;
return p;
}
int main(int argc, char **argv) {
int n;
cin >> n;
printf("%d=", n);
vector<int> factor;
vector<int> exp;
for(int p = nextp(); p && (n > 1); p = nextp()) {
int e = 0;
while(!(n%p)) {
e ++;
n /= p;
}
if(e) {
factor.push_back(p);
exp.push_back(e);
}
}
if(n != 1 || factor.empty()) {
factor.push_back(n);
exp.push_back(1);
}
if(exp[0] > 1) {
printf("%d^%d", factor[0], exp[0]);
}
else {
printf("%d", factor[0]);
}
for(int i = 1; i < factor.size(); i ++) {
if(exp[i] > 1) {
printf("*%d^%d", factor[i], exp[i]);
}
else {
printf("*%d", factor[i]);
}
}
cout << endl;
return 0;
}
1059. Prime Factors (25)
最新推荐文章于 2021-08-31 21:12:28 发布