1210:因子分解
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
输入一个数,输出其素因子分解表达式。
【输入】
输入一个整数 n (2≤n<100)。
【输出】
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
【输入样例】
60
【输出样例】
2^2*3*5
【来源】
No
1. //递推 2. #include<cstdio> 3. #include<iostream> 4. #include<cstring> 5. #include<cstdlib> 6. using namespace std; 7. int main() 8. { 9. int a,b=0,n,i; 10. scanf("%d",&a); 11. n=a; 12. for(i=2;i<=a;i++){ 13. int m=0; 14. if(n%i==0){ 15. if(b==0) b=1; 16. else printf("*"); 17. printf("%d",i); 18. while(n%i==0){n/=i;m++;} 19. if(m>1) printf("^%d",m); 20. } 21. if(i>=n||n==1) break; 22. } 23. return 0; 24. }
1. //递归 2. #include<cstdio> 3. #include<iostream> 4. #include<cstring> 5. #include<cstdlib> 6. using namespace std; 7. int s[101]; 8. void f(int x,int y) 9. { 10. if(x==0||y>x) return; 11. else{ 12. while(x%y==0){ 13. x/=y; 14. s[y]++; 15. } 16. f(x,y+1); 17. } 18. } 19. int main() 20. { 21. int n; 22. scanf("%d",&n); 23. f(n,2); 24. int bl=0; 25. for(int i=2;i<=100;i++){ 26. if(bl==1&&s[i]!=0) printf("*"); 27. if(s[i]!=0) bl=1; 28. if(s[i]==1) printf("%d",i); 29. else if (s[i]>1) printf("%d^%d",i,s[i]); 30. } 31. return 0; 32. }