题目描述
输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )。最后一个数后面也要有空格
输入描述
输入一个long型整数
输出描述
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例
输入:180
输出: 2 2 3 3 5
思路
输入正整数 input 后,除数 i 从 2 开始递增,若 input%i==0 则 input 可被 i 整除,输出 i 同时被除数 input 变为 input/i,若 input%i!=0 则被除数 i 加 1,这样每次被除数都是从 2 开始,既保证所有除数都是质数,又能够保证按照从小到大的顺序排列。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
long input;
while(cin>>input){
int i=2;
while(i<=input){
if(input%i==0){
input=input/i;
cout<<i<<' ';
}
else i=i+1;
}
}
return 0;
}