計算乙個數的約數的個數 優化之後

2021-10-03 09:30:20 字數 744 閱讀 8327

題目描述

輸入n個整數,依次輸出每個數的約數的個數

輸入描述:

輸入的第一行為n,即陣列的個數(n<=1000)

接下來的1行包括n個整數,其中每個數的範圍為(1<=num<=1000000000)

當n=0時輸入結束。

輸出描述:

可能有多組輸入資料,對於每組輸入資料,

輸出n行,其中每一行對應上面的乙個數的約數的個數。

示例1

輸入

51 3 4 6 12

輸出12

346思路:這題其實想法很簡單,但是按照平常解法,時間複雜度過大,會執行超時。這裡採用一種優化的寫法,大大降低了時間複雜度。先上**,後面有說明。

#include

using

namespace std;

intcount

(long

long a)

return sum;

}int

main()

}}

說明:因為小於sqrt(n)的數i如果能整除n,則必定還有乙個》sqrt(n)的因數j,使得ij=n。+2是把這兩個因數都算進去了。最後如果ii=n,說明有兩個相同的i是因數,只算乙個。

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...

計算乙個數中1的個數 0的個數

1.求乙個int數二進位制中1的個數 1 與1 右移 正數 負數都可以 計算的是負數補碼中1的個數 inta cin a int count 0 int n sizeof int 8 位數for int i 0 i a 1 右移一位 cout 2 右移相當於除以2 判斷最低位可用2取餘 右移可用除以...

乙個數的約數的個數 質因數分解

problem description 乙個數,如果他的素數因子只包括2,3,5,7,則稱這個數為萌數,比如,下面這些數就是前20個萌數 1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27。現在給你乙個萌數,請程式設計計算它的約數的個數。比如,4是乙...