考研每日一題2 約數的個數(C )

2021-10-04 03:45:12 字數 877 閱讀 9749

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

輸入描述:

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

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

當n=0時輸入結束。

輸出描述:

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

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

示例1

輸入

5

1 3 4 6 12

輸出

123

46

約束就是因數,比如2*3=6,那麼2和3就是6的因數,6的所有因數有1,2,3,6,所以6有四個因數。

理解完因數的定義後,這道題我首先想到的就是遍歷。於是試了一下,原本想著可能會超時,結果沒有。

所以這題就是每個數字單獨拿出來遍歷,從1到它的平方根,因為平方根之後的數字與之前的數字一起相乘就是它本身,不用遍歷那麼多,如果全部遍歷的話可能會超時。而用平方根的話,100000000只要10000次。不過要注意的是,不是每個數字結果都是乘以二,比如4,遍歷完是1和2,但是平方根後只有4,不能把2算兩次。

#include#includeusing namespace std;

int main()

if(int(sqrt(a[i]))*int(sqrt(a[i]))!=a[i])b[i]=t*2;//如果平方根相乘不是本身的話就可以乘以2

考研每日一題5 質因數的個數(C )

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。輸入描述 可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1輸出描述 對於每組資料,輸出n的質因數的個數。輸入 120輸出 5這道題就是一道數學題,分解質因數,用的是pollard rh...

每日一題2

尋找1000內的完數 個人總結 for迴圈中的變數與for迴圈外的變數再次搞混 導致輸出錯誤 完數 乙個數剛好等於它所有因子之和。基本思路很簡單 for迴圈找到因子並存放陣列,且求總和 再判斷num與sum關係即可 但此時應注意num和i的初始值且i與num大小關係,否則將無法進入for迴圈。i 2...

C 每日一題

題目 給定乙個陣列 nums 和乙個值 val 你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成,oj鏈結.解析 我們來解析一下這個題目的做題思路,他的含義就是讓我們刪除掉陣列中的元素,然後將陣...