九度OJ題目1087:約數的個數

題目1087:約數的個數

時間限制: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 
****************************************************************/  

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