题目如下:
输入一个数,输出其素因子分解表达式。
输入格式:
输入一个整数 n (2≤n<10000000)。
输出格式:
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
输入样例:
20
输出样例:
2^2*5
#include<stdio.h>
#include<math.h>
int main()
{
long int m;
while(scanf("%ld",&m)!=EOF)
{
int a[1000];
int b[100];
long int i;
int j,n;
if(m==1)
{
printf("1\n");
}
else
{
int k=0;
for(i=2; i<=m; i++)
{
n=sqrt(i);
while(m%i==0)
{
for(j=2; j<n; j++)
{
if(i%j==0)
{
break;
}
}
if(j>=n)
{
a[k]=i;
k++;
}
m=m/i;
}
}
int x;
for(i=0; i<k; i++)
{
x=0;
for(j=i; j<k; j++)
{
if(a[i]==a[j])
{
x++;
}
}
i=i+x-1;
if(i!=k-1)
{
if(x==1)
{
printf("%d*",a[i]);
}
else
{
printf("%d^%d*",a[i],x);
}
}
else
{
if(x==1)
{
printf("%d\n",a[i]);
}
else
{
printf("%d^%d\n",a[i],x);
}
}
}
}
}
return 0;
}