题目
将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出。最后输出质因数的个数。
输入
一行,一个正整数。
输出
两行,第一行为用空格分开的质因数
第二行为质因数的个数
思路:因为质因数是指一个正整数的约数,并且该数还属于是质数的数字。所以我用循环的办法,判断正整数除以最小质数开始,余数是否等于0,如果等于,就继续执行后续语句,如果不等于0,那么i的值就继续增加。直到最后n的值等于1结束。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int cnt = 0;
while(n != 1) {
for(int i = 2; i <= n; i++) {
if(n % i == 0) {
cout << i << " ";
cnt++;
n = n / i;
break;
}
}
}
cout << endl << cnt;
return 0;
}