HDOJ  1406   完数

来源:互联网 发布:js 按字母排序 编辑:程序博客网 时间:2024/06/16 08:50

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1406

有时候暴力,也是一种解决问题的方法....

#include <stdio.h>
#include <math.h>
#define SWAP(X,Y) {int T;T=X;X=Y;Y=T;}
bool judge(int n)
{
    intj,sum=1;
   for(j=2;j<=n/2;j++)
    {
       if(n%j==0)
           sum+=j;;
    }
   if(sum==n)
       return true;
    returnfalse;
}
int main()
{
    intn,temp,num1,num2,i,sum;
   scanf("%d",&n);
   while(n--)
    {
       sum=0;
       scanf("%d%d",&num1,&num2);
       if(num1>num2)
           SWAP(num1,num2);
       for(i=num1;i<=num2;i++)
           if(judge(i))
               sum++;
       printf("%d\n",sum);
    }
    return0;
}
*******************************************
谁知道这一种代码为什么这样,6-28,28-496,496-8128,
在10000的范围内存在着三个这样的范围的数,其范围内全部为完数
#include <stdio.h>
#define SWAP(X,Y) {int T;T=X;X=Y;Y=T;}
const int PrefectNum[4] = {6,28,496,8128};
int main(void)
{
    int n, num1,num2, count, i;
   scanf("%d",&n);
    while(n--)
    {
       scanf("%d%d",&num1,&num2);
       if (num1 > num2)
           SWAP(num1,num2);
       for (i = 0, count = 0; i < 4; i++)
       {
           if ((num1 > PrefectNum[3]) || (num2 <PrefectNum[i]))
               break;
           else if (num1 <= PrefectNum[i])
               count++;
       }
       printf("%d\n",count);
    }
    return0;
}

0 0
原创粉丝点击