给出一个int范围的整数,按照从小到大的顺序来输出其分解为质因数的乘法算式
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=100000;
int prime[maxn];
bool p[maxn]={false};
int num=0;
struct factor{
int x,cnt;
}fac[10];
void findprime()
{
for(int i=2;i<maxn;i++)
{
if(p[i]==false)
{
prime[num++]=i;
for(int j=i;j<maxn;j=j+i)
{
p[j]=true;
}
}
}
}
int main()
{
findprime();
int n;
int sum=0;
scanf("%d",&n);
//else{
int sqr=(int)sqrt(1.0*n);
cout<<n<<"=";
for(int i=0;i<num&&prime[i]<=sqr;i++)
{
if(n%prime[i]==0)
{
fac[sum].x=prime[i];
fac[sum].cnt=0;
while(n%prime[i]==0){
fac[sum].cnt++;
n/=prime[i];
}
sum++;
}
if(n==1)break;
}
if(n!=1)
{
fac[sum].x=n;
fac[sum].cnt=1;
sum++;
}
// }
for(int i=0;i<sum;i++)
{
if(i>0)printf("*");
printf("%d",fac[i].x);
if(fac[i].cnt>1){
printf("^%d",fac[i].cnt);
}
}
system("pause");
return 0;
}