22:因子分解
- 总时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
-
输入一个数,输出其素因子分解表达式。
输入 - 输入一个整数 n (2 <= n < 100)。 输出
- 输出该整数的因子分解表达式。 表达式中各个素数从小到大排列。 如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。 样例输入
-
60
样例输出 -
2^2*3*5
来源 - 习题(9-3)
-
1 #include
2 #include 3 using namespace std; 4 int vis[10001]; 5 int zs2; 6 int zs3; 7 int zs5; 8 void f(int &n) 9 { 10 if(n%2==0) 11 { 12 zs2++; 13 n=n/2; 14 f(n); 15 } 16 else if(n%3==0) 17 { 18 zs3++; 19 n=n/3; 20 f(n); 21 } 22 else if(n%5==0) 23 { 24 zs5++; 25 n=n/5; 26 f(n); 27 } 28 } 29 int main() 30 { 31 32 int n; 33 cin>>n; 34 for(int i=2;i<=sqrt(n+0.5);i++) 35 { 36 if(vis[i]==0) 37 { 38 for(int j=i*i;j<=n;j=j+i) 39 vis[j]=1; 40 } 41 }//筛法求素数 42 f(n); 43 int flag=0; 44 if(zs2==1) 45 { 46 cout<<"2"; 47 flag=1; 48 } 49 else if(zs2>0) 50 { 51 cout<<"2^"< 1) 69 { 70 if(flag==1) 71 { 72 cout<<"*3^"< 0) 94 if(flag==1||flag==2) 95 { 96 cout<<"*5^"<