题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long num;
cin >> num;
for(int i = 2; i <= sqrt(num); i++){
while(num % i == 0){
cout << i << " ";
num /= i;
}
}
if(num > 1){
cout << num;
}
return 0;
}
思路:
while循环结束后, 如果num = 1, 则while循环中刚好被质数分解完, 如果大于1, 说明没有被分解完,num就是那最后一个质数。
从最小的质数2开始不停的除法,除到1为止
128/2=64
64/2=32
32/2=16
16/2=8
8/2=4
4/2=2
2/2=1
output:2 2 2 2 2 2 2
或者除到最后是一个质数除不了的,就输出这个数
180/2=90
90/2=45
45/3=15
15/3=5
output:2 2 3 3 5
安克创新 Anker公司福利 875人发布