给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1K1⋅p2K2⋯pm

输入格式:

输入long int范围内的正整数 N。

输出格式:

按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km,其中pi为素因子并要求由小到大输出,指数kipi的个数;当ki为1即因子pi只有一个时不输出ki

输入样例:

1
1323

输出样例:

1
1323=3^3*7^2

思路

数学模拟题。具体看代码,或者讲解视频

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
int main() {
long long n;
scanf("%lld", &n);
int first = 0;
printf("%lld=", n);
for(int i = 2; i <= n / i; i++) {
if(n % i == 0) {
int num = 0;
while(n % i == 0)
n /= i, num++;
if(num != 1)
printf("%s%d^%d", (first ? "*" : ""), i, num);
else
printf("%s%d", (first ? "*" : ""), i);
first = 1;
}
}
if(n > 1)
printf("%s%lld", (first ? "*" : ""), n);
else if(!first)
printf("%lld", n);
return 0;
}