Prime Factors

来源:互联网 发布:舆情调查软件 编辑:程序博客网 时间:2024/05/18 07:37

1059. Prime Factors (25)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
HE, Qinming

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.

Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291

提交代码

#include<stdio.h>#include<math.h>const int maxn=100010;int prime[maxn],pnum=0;bool p[maxn]={0};void find_prime(){for(int i=2;i<maxn;i++){if(p[i]==false){prime[pnum++]=i;for(int j=i+i;j<maxn;j+=i){p[j]=true;}}}}struct factor{int x,cnt;}fac[10];int main(){find_prime();int n;scanf("%d",&n);int sqr=(int)sqrt(1.0*n);int num=0;if(n==1) printf("1=1\n");else{printf("%d=",n);for(int i=0;i<pnum&&prime[i]<=sqr;i++){if(n%prime[i]==0){fac[num].x=prime[i];fac[num].cnt=0;while(n%prime[i]==0){fac[num].cnt++;n/=prime[i];}num++;}if(n==1) break;}if(n!=1){fac[num].x=n;fac[num++].cnt=1;}for(int i=0;i<num;i++){if(i>0) printf("*");printf("%d",fac[i].x);if(fac[i].cnt>1){printf("^%d",fac[i].cnt);}}}return 0;}


原创粉丝点击