【PAT甲级】1059 Prime Factors (25 分)

题意:

输入一个正整数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 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11681506.html