PAT 1059. Prime Factors (25) 质因子分解
来源:互联网 发布:ubuntu iptables启用 编辑:程序博客网 时间:2024/05/01 10:36
题目链接 http://www.patest.cn/contests/pat-a-practise/1059
Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 *…*pm^km.
Input Specification:
Each input file contains one test case which gives a positive integer N in the range of long int.
Output Specification:
Factor N in the format N = p1^k1 * p2^k2 *…*pm^km, where pi's are prime factors of N in increasing order, and the exponent ki is the number of pi -- hence when there is only one pi, ki is 1 and must NOT be printed out.(坑爹,这最后一句不是说满足情况不输出,可答案是要输出的,害我吓考虑2个case没过)
Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291
---------------------------------------------------华丽的分割线---------------------------------------------------------------------------------------------
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 const int maxn=100005; 5 int prime[maxn],pnum=0; 6 bool p[maxn]={0}; 7 void Find_Prime(){ 8 p[0]=p[1]=true; 9 for(int i=2;i<maxn;i++){10 if(p[i]==false){11 prime[pnum++]=i;12 for(int j=i+i;j<maxn;j+=i)13 p[j]=true;14 }15 }16 }17 struct factor{18 int x,cnt;19 }fac[20];20 int num;21 void PrimeFactor(int n){22 int sqr=(int)sqrt(n);23 num=0;24 for(int i=0;i<maxn && prime[i]<=sqr;i++){25 if(n%prime[i]==0){26 fac[num].x=prime[i];27 fac[num].cnt=0;28 while(n%prime[i]==0){29 fac[num].cnt++;30 n/=prime[i];31 }32 num++;33 }34 if(n==1) break;35 }36 if(n!=1){37 fac[num].x=n;38 fac[num++].cnt=1;39 }40 }41 void Print_fac(int n){42 printf("%d=",n);43 for(int i=0;i<num;i++){44 if(i>0)45 printf("*");46 if(fac[i].cnt>1)47 printf("%d^%d",fac[i].x,fac[i].cnt);48 else49 printf("%d",fac[i].x);50 }51 printf("\n");52 }53 int main()54 {55 Find_Prime();56 int n;57 while(scanf("%d",&n)!=EOF){58 if(n==1)59 printf("1=1\n");60 else{61 PrimeFactor(n);62 Print_fac(n);63 }64 65 /*66 int a=(1<<31)-1;67 cout<<a<<endl;68 cout<<"1"<<endl;69 PrimeFactor(a);70 cout<<"2"<<endl;71 Print_fac(a);72 cout<<"3"<<endl;73 cout<<num<<endl;74 */75 }76 return 0;77 }78 //97532468=2^2*11*17*101*1291
0 0
- PAT 1059. Prime Factors (25) 质因子分解
- PAT 1059. Prime Factors (25)(分解质因数)
- PAT (Advanced Level) 1059. Prime Factors (25) 求所有质因子
- 1059. Prime Factors (25)-PAT
- 【PAT】1059. Prime Factors (25)
- PAT 1059. Prime Factors (25)
- PAT 1059. Prime Factors (25)
- PAT 1059. Prime Factors (25)
- PAT 1059. Prime Factors
- PAT 1059. Prime Factors
- 【PAT】1059. Prime Factors
- pat 1059. Prime Factors
- PAT--1059. Prime Factors
- PAT- Prime Factors (25)
- PAT-1059 Prime Factors (素数因子)
- PAT A 1059. Prime Factors (25)
- 1059. Prime Factors (25) PAT 甲级
- 【PAT甲级】1059. Prime Factors (25)
- Unity中鼠标左键按下,拖拽物体移动
- iOS重绘机制drawRect
- Java代码通过JDBC连接Hiveserver2
- 用到数组的相关java程序
- 关于类加载器的理解以及双亲委派模型
- PAT 1059. Prime Factors (25) 质因子分解
- PAT 大数运算
- Jmeter之JDBC Request使用方法(oracle)
- mybatis like 用法
- 【剑指offer-Java版】31连续子数组的最大和
- MPI库安装、配置及测试程序
- 《乞力马扎罗山的雪》——海明威
- 组合的总结
- 获取MAC地址以及MD5加密