#include <cstdio>
#include <cstring>
#include <cmath>
const int maxn=100010;
bool isnotPrime[maxn]={false};//不能初始化为true,否则其它还会是false
int prime[maxn]={0};
int priNum=0;
void olaPrime(int n){
int sqr=(int)sqrt(1.0*n);
for(int i=2;i<=sqr;i++){//因为i*i会超,同理j*j也是,不能大于2147483647
if(isnotPrime[i]==false){
prime[priNum++]=i;
for(int j=i+i;j<=sqr;j+=i){//j不能=maxn
isnotPrime[j]=true;
}
}
}
}
struct factor{
int c;
int f;
}fac[10];
int main(){
int n=0;
int fn=0;
scanf("%d",&n);
if(n==1)printf("1=1");//特判
else{
printf("%d=",n);//直接输出
olaPrime(n);
for(int i=0;i<priNum;i++){
if(n%prime[i]==0){
fac[fn].f=prime[i];
fac[fn].c=0;
while(n%prime[i]==0){//在if里
n/=prime[i];
fac[fn].c++;
}
fn++;
}
if(n==1){//及时退出循环,节省点时间
break;
}
}
if(n!=1){
fac[fn].c=1;
fac[fn].f=n;
fn++;
}
for(int i=0;i<fn;i++){
printf("%d",fac[i].f);
if(fac[i].c>1){
printf("^%d",fac[i].c);
}
if(i<fn-1){
printf("*");
}
}
}
return 0;
}
1059 Prime Factors (25分) c++
猜你喜欢
转载自blog.csdn.net/weixin_44211856/article/details/104764274
今日推荐
周排行