-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
输入一个数,输出其素因子分解表达式。
输入
- 输入一个整数 n (2 <= n < 100)。 输出
-
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
样例输入
-
60
样例输出
-
2^2*3*5
#include <iostream>
using namespace std;
int su[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};//25个
int main()
{
int n;
cin>>n;
int m=n;
int count=0;
for(int i=0;i<25;i++){
count=0;
while(m%su[i]==0&&m!=1){
m=m/su[i];
count++;
}
if(count==1){
cout<<su[i];
if(m!=1)
cout<<'*';
else break;
}else{
if(count!=0){
cout<<su[i]<<'^'<<count;
if(m!=1)
cout<<'*';
else break;
}
}
}
return 0;
}
PS:因为n的范围很小,枚举即可。先写一个算100以内质数的,输出后直接复制就可以。
对于输出的格式要注意,判断条件,这个搞了20多分钟。。
最后m==1是判断break的条件。不是m==0...