题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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<<' ';
}
京公网安备 11010502036488号