题意:
输入一个正整数N(范围为long int),输出它等于哪些质数的乘积。
trick:
如果N为1,直接输出1即可,数据点3存在这样的数据。
如果N本身是一个质数,直接输出它等于自己即可,数据点4存在这样的数据。
代码:
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int ans[100007];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long n;
cin>>n;
long long x=n;
int num=0;
for(int i=2;1ll*i*i<=n;++i){
if(x==1)
break;
while(x%(1ll*i)==0){
x/=1ll*i;
++ans[i];
++num;
if(x==1)
break;
}
}
if(num==0){
cout<<n<<"="<<n;
return 0;
}
cout<<n<<"=";
int flag=0;
for(int i=2;i*i<=n;++i){
if(ans[i]){
if(flag)
cout<<"*";
cout<<i;
if(ans[i]>1)
cout<<"^"<<ans[i];
flag=1;
}
}
return 0;
}