题目描述
给定一个区间 [a,b],请你求出区间 [a,b]中所有整数的质因数分解。
输入描述
输入共一行,包含两个整数 a,b。
2≤a≤b≤10^3。
输出描述
每行输出一个数的分解,形如 k=a1×a2×a3⋯(a1≤a2≤a3⋯,k也是从小到大的)(具体可看样例)
输入输出样例
示例
输入
3 10
输出
1. 3=3 2. 4=2*2 3. 5=5 4. 6=2*3 5. 7=7 6. 8=2*2*2 7. 9=3*3 8. 10=2*5
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
设计factor函数,传入一个数,寻找可以整除他的质数,如果没有被除尽,则说明剩余的数是最大的质数。
代码
1. #include<bits/stdc++.h> 2. using namespace std; 3. int p[20]; 4. int c[40]; 5. int factor(int n){ 6. int m=0; 7. for(int i=2;i<=sqrt(n);i++){ 8. if(n%i==0){ 9. p[++m]=i;c[m]=0; 10. while(n%i==0) 11. n/=i,c[m]++; 12. } 13. } 14. if(n>1){ 15. p[++m]=n; 16. c[m]=1; 17. } 18. return m; 19. } 20. int main(){ 21. int a,b; 22. cin>>a>>b; 23. for(int i=a;i<=b;i++){ 24. int m=factor(i); 25. cout<<i<<"="; 26. for(int j=1;j<=m;j++){ 27. for(int k=1;k<=c[j];k++){ 28. cout<<p[j]; 29. if(k<c[j]) cout<<"*"; 30. } 31. if(j<m) cout<<"*"; 32. } 33. cout<<endl; 34. } 35. return 0; 36. }