九度OJ-1087-約數的個數

題目1087:約數的個數

時間限制:1 秒

內存限制:32 兆

特殊判題:

提交:9528

解決:3154

題目描述:

輸入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<iostream>
#include<stdio.h>
#include<math.h>
#define Max 1010
using namespace std;
int Yueshu(int x){   //給出某個數的約束 
	int cnt=0;  
	int tmp=sqrt(x)+1;
	if(x==1) return 1;
	for(int i=1;i<tmp;i++){  //如果x%i==0,則x的約數是x/i和i兩個 
		if(x%i==0){
			cnt+=2;
		}
	}
	if(x==(tmp-1)*(tmp-1)){   //如果x x=i*i;那麼約數就只有一個 
		cnt--;
	}
	return cnt;
} 
int main(){
	int n;
	int a[Max];
	while(scanf("%d",&n)!=EOF){
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		for(int i=0;i<n;i++){
			printf("%d\n",Yueshu(a[i]));
		}
	} 
	return 0;
}

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