pat 1059. Prime Factors

来源:互联网 发布:哪个打字软件最好用 编辑:程序博客网 时间:2024/05/21 19:28

原题链接:https://www.patest.cn/contests/pat-a-practise/1059



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


题意:找一个数的素因子,按照从小到大的顺序输出。。


解:挨着找就是了,注意特判n=1的情况,因为这个WA了两次。


代码:

#include <cstdio>#include <cstring>#include <cmath>typedef long long ll;int isprime(int x){int i, t = sqrt(x);if (x == 0 || x == 1)return 0;for (i = 2; i <= t; i++){if (x%i == 0)return 0;}return 1;}int main(){int i, j = 1;ll n;scanf("%lld", &n);int cnt = 0;printf("%lld=", n);if (n == 1){printf("1\n");return 0;}for (i = 2; i <= n; i++){if (isprime(i) && n%i == 0){if (j > 1)printf("*");while (n % i == 0){cnt++;n /= i;}printf("%d", i);if (cnt > 1)printf("^%d", cnt);if (n == 1)break;j++;cnt = 0;}}printf("\n");return 0;}


原创粉丝点击