进阶实验 2-3.4 素因子分解(20 分)
程序员文章站
2022-03-04 22:43:29
...
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1k1·p2k2⋯pmkm。
输入格式:
输入 long int 范围内的正整数 N。
输出格式:
按给定格式输出 N 的素因式分解表达式,即 N=p1k1·p2k2⋯pmkm 为素因子并要求由小到大输出,指数 ki 为 pi 的个数;当 ki 为 1 即因子 pi 只有一个时不输出 ki。
输入样例:
1323
输出样例:
1323=3^3*7^2
代码:
#include<math.h>
#include<stdio.h>
int prime(int number){
int i,range=sqrt(number);
for(i=2;i<=range;i++)if(number%i==0)return 0;
return 1;
}
int main(){
int factor=1,number,answer[8192]={0},flag=0,i;
scanf("%d",&number);
printf("%d=",number);
if(number<2)printf("%d",number);
while(number>1)if(prime(++factor))while(number%factor==0){
number/=factor;
answer[factor]++;
}
for(i=2;i<8192;i++)if(answer[i]){
if(flag)printf("*");
flag=1;
printf("%d",i);
if(answer[i]>1)printf("^%d",answer[i]);
}
return 0;
}