题目描述

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