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:97532468Sample Output:
97532468=2^2*11*17*101*1291
方法二更直接.。。。
方法一:
#include<stdio.h>
int p[100000]={0};
void findprime(){
int i,j;
for(i=2;i<100000;i++){
for(j=i+i;j<100000;j=j+i){
p[j]=1;
}
}
}
int main(){
findprime();
int n,i;
int flag=0;
scanf("%d",&n);
if(n==1){
printf("1=1");
}
else{
printf("%d=",n);
for(i=2;n>1;i++){
int k=0;
while(p[i]==0&&n%i==0){
n=n/i;
k++;
}
if(k!=0){
if(flag){
printf("*");
}
flag=1;
printf("%d",i);
if(k>=2){
printf("^%d",k);
}
}
}
}
}
方法二:
#include<stdio.h>
//int p[100000]={0};
//void findprime(){
// int i,j;
// for(i=2;i<100000;i++){
// for(j=i+i;j<100000;j=j+i){
// p[j]=1;
// }
// }
//}
int main(){
// findprime();
int n,i;
int flag=0;
scanf("%d",&n);
if(n==1){
printf("1=1");
}
else{
printf("%d=",n);
for(i=2;n>1;i++){
int k=0;
while(n%i==0){
n=n/i;
k++;
}
if(k!=0){
if(flag){
printf("*");
}
flag=1;
printf("%d",i);
if(k>=2){
printf("^%d",k);
}
}
}
}
}