- 总时间限制:
- 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...