7-6 素因子分解 (20 分)
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1k1⋅p2k2⋯pmkm。
输入格式:
输入long int范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km
,其中pi
为素因子并要求由小到大输出,指数ki
为pi
的个数;当ki
为1即因子pi
只有一个时不输出ki
。
输入样例:
1323
输出样例:
1323=3^3*7^2
#include<stdio.h>
#include<math.h>
int prime(int x);
int main (void)
{
long int n,i,count;
count=0;
long int k=1;
scanf("%d",&n);
printf("%d=",n);
if(n==1||n==2||n==3){
printf("%d",n);
}
for(i=2;i<=n;i++){
if(n!=1){
if(prime(i)){
if(n%i==0){
count=0;
if(k!=1){
printf("*");
}
printf("%d",i);
k++;
while(n%i==0){
n=n/i;
count++;
}
if(count>1){
printf("^%d",count);
}
}
}
}
}
return 0;
}
int prime(int x)//判断是否为素数
{
int i;
if(i==2){
return 1;
}
else{
for(i=2;i<x;i++)
{
if(x%i==0){
break;
}
}
if(i==x){
return 1;
}
else return 0;
}
}