九度OJ 题目1087:约数的个数

来源:互联网 发布:mac迅雷下载速度0 编辑:程序博客网 时间:2024/05/20 00:12


一.题目描述:
输入n个整数,依次输出每个数的约数的个数
输入:
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。

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

 5
1 3 4 6 12
样例输出:

1
2
3
4
6

二.题目分析

     查找约数,统计数目,在查找时注意查找范围上限到sqrt(x)即可,否则会超时。

三.代码

#include <stdio.h>#include <stdlib.h>#include <math.h>int GcdNum(int x){    int i=0,cn=0;    for(i=1;i<=sqrt(x);i++)    {        if(x%i==0)            cn++;    }    if((i-1)*(i-1)==x)        return 2*cn-1;    return 2*cn;;}int main(){    int n,x,i;    while(scanf("%d",&n)&&n)    {        for(i=0;i<n;i++)        {            scanf("%d",&x);            printf("%d\n",GcdNum(x));        }    }    return 0;}


0 0