题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格
从2开始,循环到根号x即可,余数为0时输出除数,因为有重复的所以要while循环
知道除完结果为1为止
另外还有一种情况就是本身就是质数的,只有1和它本身相乘可以,所以最后判断一下,如果不是除尽退出循环的的,输出本身
#include<iostream> #include<math.h> using namespace std; int main(){ long num; cin>>num; for(int i=2;num!=1&&i<=sqrt(num);i++){ //两种退出条件,除尽为1,本身是质数,i超过根号num while(num%i==0)//注意这里是循环 { num/=i; cout<<i<<' '; } } if(num!=1) cout<<num<<' '; }