時間限制:1秒 空間限制:65536K 熱度指數:18605
校招時部分企業筆試將禁止編程題跳出頁面,爲提前適應,練習時請使用在線自測,而非本地IDE。
題目描述
求正整數N(N>1)的質因數的個數。 相同的質因數需要重複計算。如120=2*2*2*3*5,共有5個質因數。
輸入描述:
可能有多組測試數據,每組測試數據的輸入是一個正整數N,(1<N<10^9)。
輸出描述:
對於每組數據,輸出N的質因數的個數。
示例1
輸入
120
輸出
5
1. sqrt()減小時間複雜度
2. 最後如果n > 1,則cnt++
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(scanf("%d", &n)!=EOF){
int cnt = 0;
for(int i = 2; i <= sqrt(n); i++){
while(n%i == 0){
cnt++;
n /= i;
}
}
if(n > 1) cnt++;
cout << cnt << endl;
}
return 0;
}