给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1 k1⋅p2k2⋯pm km。
输入格式:
输入long int范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1 k1⋅p2k2⋯pm km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。
输入样例:
1323
输出样例:
1323=3^3*7^2
#include <stdio.h>
#include <math.h>
int isPrime(long int p);
int main()
{
long int number;
scanf("%ld", &number);
printf("%ld=", number);
if (number == 1 || isPrime(number))
printf("%ld", number);
else
{
int sqrt_number = sqrt(number), flag = 0;
for(int i=2;i<= sqrt_number;i++)
if (isPrime(i))
{
int count = 0;
while (number % i == 0)
{
number /= i;
count++; flag++;
}
if (flag == count && flag)//第一个数
count == 1 ? printf("%d", i) : printf("%d^%d", i, count);
else if(count!=0)
count == 1 ? printf("*%d", i) : printf("*%d^%d", i, count);
}
}
return 0;
}
int isPrime(long int p)
{
if (p <= 1)
return 0;
for (int div = 2; div <= sqrt(p); div++)
if (p % div == 0)
return 0;
return 1;
}