题目1087:约数的个数

来源:互联网 发布:mysql手机版 编辑:程序博客网 时间:2024/05/08 03:24

 

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:3486

解决:966

 

题目描述:

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

输入:

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

输出:

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

样例输入:
51 3 4 6 12
样例输出:
12346
来源:
2011年清华大学计算机研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7810-1-1.html

 

 

求m的约数个数的方法:将m开方得n,判断n之前属于m的约数个数num。若n为整数,则m约数个数为2*num+1,否则为2*num

#include<stdio.h>#include<math.h>int yueshu(int m){    int i,sum = 0;    for(i = 1; i < sqrt(m); i++)    {        if(m % i == 0)        {            sum++;        }    }    sum *=2;    if((int)sqrt(m) * (int)sqrt(m) == m) //强转        sum++;    return sum;}int main(){    int n;    int s[1000];    while(scanf("%d",&n) != EOF)    {        int i;        for(i = 0; i < n; i++)        {            scanf("%d",&s[i]);            s[i] = yueshu(s[i]);        }        for(i = 0; i < n; i++)        {            printf("%d\n",s[i]);        }    }    return 0;}


 


 

原创粉丝点击