题目描述
blablabla
样例
#include<iostream>
#include<cmath>
using namespace std;
int deal(int,int);
int main()
{
int n;
cin>>n;
if(n==1)
cout<<n<<"="<<1;
if(n>1){
cout<<n<<"=";//用来布置前面的输出
int prev =0;//用于判断后续输出过程中前面是否有数字,用来确定输出中的*
for(int i=2;i<=n/i;i++)
{
int p =0,k=0;//用来存储对应的底数和幂指数
if(n%i==0){
p =i;//记录底数
k = deal(n,i);//记录幂指数
prev++;
n/=pow(p,k);
}
if(prev>1&&k!=0)cout<<"*";
//用来输出后面的输出
if(k==1)cout<<p;
if(k>1)cout<<p<<"^"<<k;
}
if(n>1){
if(prev>=1)cout<<"*";
cout<<n;
}
}
return 0;
}
//计算n可以被i整除几次
int deal(int n,int i){
int num = 0;
while(n%i==0&&n>=2)
{
num++;
n/=i;
}
return num;
}
算法1
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla