讲一个数分解为几个质数相乘的结果
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
const int MAXN=1000;
int a[MAXN];//用来存质因数
int b[MAXN];//用来存质因数的个数
int main()
{
int n;
while(~scanf("%d",&n))
{
int tot=0;
int l=(int)((double)(sqrt(n)+1));
for(int i=2;i<=l;i++) //从i=2开始寻找
if(n%i==0) //如果i是n的约数,那么就对n进行操作
{
a[++tot]=i;//数组a存放,从a[1]开始存
b[tot]=0; //数组b这个时候初始化为0
while(n%i==0)
{
++b[tot];
n/=i;//记住是除
}
}
if(n!=1)//不能忘记这一步操作
{
a[++tot]=n;
b[tot]=1;
}
//输出:
//第1种写法 a*a*a*b*b*b*b*c*c
printf("第一种写法: ");
for(int i=1;i<=tot;i++)
{
if(i==1)
{
printf("%d",a[i]);
for(int j=1;j<b[i];j++)
printf("*%d",a[i]);
}
else
{
for(int j=0;j<b[i];j++)
printf("*%d",a[i]);
}
}
printf("\n");
//输出:
//第2种写法 a^n*b^m...
printf("第二种写法: ");
for(int i=1;i<=tot;i++)
{
if(i==1)
printf("%d^%d",a[i],b[i]);
else
printf("*%d^%d",a[i],b[i]);
}
printf("\n");
//
}
return 0;
}