问题 D: 约数的个数

问题 D: 约数的个数

时间限制: 1 Sec  内存限制: 32 MB
提交: 272  解决: 90
[提交][状态][讨论版][命题人:外部导入]

题目描述

输入n个整数,依次输出每个数的约数的个数。

输入

输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。

输出

可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。

样例输入

6
1 4 6 8 10 12
0

样例输出

1
3
4
4
4
6

#include<bits/stdc++.h>

using namespace std;

int solve(int x)
{
    int sum=0;
    int n=sqrt(x);
    for(int i=1;i<=n;i++){
        if(x%i==0) sum+=2;
    }
    if(n*n==x) sum--;//等于的话 会多加一个
    return sum;
}
int main()
{
    int n;
    while(scanf("%d",&n)==1,n){
        for(int i=0;i<n;i++){
            int x;
            scanf("%d",&x);
            printf("%d\n",solve(x));
        }

    }
    return 0;
}

 

posted @ 2018-12-21 13:40  12-num  阅读(498)  评论(0编辑  收藏  举报