题解 | #质数因子#
质数因子
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")