- 任何一个数都可以表达为质因子得乘积。
- 注意到4的时候前面得2其实就已经分解了,3如果遇到9也是同理的。
- 注意注释中的一个优化条件。
- 以及最后退出得一个条件。
#include<iostream> #include<string> #include<vector> using namespace std; int main(){ long num; if(num==0) cout<<" "<<endl; while(cin>>num){ for(long i=2; i<=num && i*i <= num;i++){ // 优化质因子必然 小于等于 num开根号(此处给都是等价得写法) while(num%i==0){ cout<<i<<" "; num /= i; } } if(num>=2) cout<<num<<" ";//如果m=1,则while循环中刚好被质数分解完,如果大于1,说明没有被分解完,m就是那最后一个质数 //同时,这句也可以应对输入为质数的特殊情况 } return 0; }