#include<bits/stdc++.h>
using namespace std;
int prime[100],pNum=0,res[100],k=0;
bool num[100];
void find_prime() {
for(int i=2; i<100; i++) {
if(num[i]==false) prime[pNum++]=i;
for(int j=i+i; j<100; j+=i) {
num[j]=true;
}
}
}
void f(int x) {
if(x==1) return;
for(int i=0; i<pNum&&prime[i]<=x; i++) {
if(x%prime[i]==0) {
res[k++]=prime[i];
f(x/prime[i]);
return;
}
}
}
int main() {
int n;
scanf("%d",&n);
find_prime();
f(n);
//两种情况下要输出:res[now]!=res[next];next==k
int now=0,next=1;
while(next<k) {
if(res[now]==res[next]) {
next++;
} else {
if(next-now>1) {
printf("%d^%d*",res[now],next-now);
now=next;
next++;
} else {
printf("%d*",res[now]);
now=next;
next++;
}
}
}
if(next-now>1) {
printf("%d^%d",res[now],next-now);
now=next;
next++;
} else {
printf("%d",res[now]);
now=next;
next++;
}
}
素因子分解
最新推荐文章于 2021-10-07 19:15:45 发布