時間限制:1 秒
內存限制:32 兆
特殊判題:否
- 題目描述:
-
輸入n個整數,依次輸出每個數的約數的個數
- 輸入:
-
輸入的第一行爲N,即數組的個數(N<=1000)
接下來的1行包括N個整數,其中每個數的範圍爲(1<=Num<=1000000000)
當N=0時輸入結束。
- 輸出:
-
可能有多組輸入數據,對於每組輸入數據,
輸出N行,其中每一行對應上面的一個數的約數的個數。
- 樣例輸入:
-
5 1 3 4 6 12
- 樣例輸出:
-
1 2 3 4 6
- 來源:
- 2011年清華大學計算機研究生機試真題
#include <stdio.h> #include <math.h> int main(){ int n,num[1001]; while(scanf("%d",&n)!=EOF&&n!=0){ //輸入n for(int i=0;i<n;i++){ scanf("%d",&num[i]);//輸入n個整數 int sq=sqrt(num[i]),cnt=0;//測試到不比sqrt(num[i])(對num[i]開根號)大的整數即可 for(int j=1;j<=sq;j++){ if(num[i]%j==0) cnt += 2;//約數個數加2 } if(sq*sq==num[i]) --cnt;//如果對num[i]開根號結果爲整數,則約數總數要減1 printf("%d\n",cnt);//輸出結果 } } return 0; } /************************************************************** Problem: 1087 User: zpy Language: C++ Result: Accepted Time:100 ms Memory:1032 kb ****************************************************************/