题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
辗转相除法,循环只需要判断到 $\sqrt{input}$即可。因为若input为两数相乘,随着一个数增大,另一个乘数会减小,最终也就是为 $\sqrt{input}$;如果不满足,则说明input本身是质数
#include <iostream>
#include <cmath>
using namespace std;
void count_odd(int input){
if(input <= 2)
cout << input << " ";
else{
for(int i = 2; i*i <= input; i ++){
if(input % i == 0){
cout << i << " ";
input /= i;
i = 1;
}
}
cout << input << endl;
}
}
int main() {
int input = 0;
cin >> input;
count_odd(input);
cout << endl;
}
// 64 位输出请用 printf("%lld")
