1059. Prime Factors (25)-PAT

来源:互联网 发布:快手早餐 知乎 编辑:程序博客网 时间:2024/05/22 05:41

1059. Prime Factors (25)

时间限制
50 ms
内存限制
32000 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
推荐指数:※
来源:http://pat.zju.edu.cn/contests/pat-a-practise/1059
这道题目主要是分解质因子。
1.考虑1的情况。
#include<iostream>#include<string.h>#include<math.h>using namespace std;bool is_prime(long n){long i,tmp;tmp=sqrt(n)+1;for(i=3;i<=tmp;i++){if(n%i==0)return false;}return true;}int main(){long n,i,tmp,k;cin>>n;cout<<n<<"=";if(n==1){cout<<1;return 0;}tmp=n;for(i=2;i<=tmp;i++){k=0;if(is_prime(i)==true){while(n%i==0){k++;n=n/i;}}if(k>1){cout<<i<<"^"<<k;}else if(k==1){cout<<i;}if(n!=1&k>=1)cout<<"*";else if(n==1)break;}return 0;}


原创粉丝点击