题意:
输入一个正整数N(范围为long int),输出它等于哪些质数的乘积。
trick:
如果N为1,直接输出1即可,数据点3存在这样的数据。
如果N本身是一个质数,直接输出它等于自己即可,数据点4存在这样的数据。
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int ans[100007]; 5 int main(){ 6 ios::sync_with_stdio(false); 7 cin.tie(NULL); 8 cout.tie(NULL); 9 long long n; 10 cin>>n; 11 long long x=n; 12 int num=0; 13 for(int i=2;1ll*i*i<=n;++i){ 14 if(x==1) 15 break; 16 while(x%(1ll*i)==0){ 17 x/=1ll*i; 18 ++ans[i]; 19 ++num; 20 if(x==1) 21 break; 22 } 23 } 24 if(num==0){ 25 cout<<n<<"="<<n; 26 return 0; 27 } 28 cout<<n<<"="; 29 int flag=0; 30 for(int i=2;i*i<=n;++i) 31 if(ans[i]){ 32 if(flag) 33 cout<<"*"; 34 cout<<i; 35 if(ans[i]>1) 36 cout<<"^"<<ans[i]; 37 flag=1; 38 } 39 return 0; 40 }