质因数2
Description
将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出。最后输出质因数的个数。
Input
一行,一个正整数
Output
两行,第一行为用空格分开的质因数
第二行为质因数的个数
Sample Input 1
66
Sample Output 1
2 3 11 3
Hint
HINT:时间限制:1.0s 内存限制:256.0MB
思路:取一个因数后就把合数缩小继续取因数
这个因数还确实是质数,因为能取得这个数不能有因数,比如因数开始取2,如果2不是,取3,如果3不是,取4,然而4是不会取的,如果之前能取2就已经取了......
AC代码:
#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;
}