【數論】質因數的個數

時間限制: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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章