HDU 1406.完数(简单的筛选法)

来源:互联网 发布:apache的日志指令 编辑:程序博客网 时间:2024/06/06 11:04
/***********************题目大意:找出num1,num2之间的完数个数,完数(如24=1+2+3+4+6+8,6=1+2+3)原题:点击打开链接题目解析:在num1,num2之间的每个数判断它是否等于它的真约数的和;若是标记flag=1;*****************/
#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>int judge(int n){    int i,flag=0,s=0;    for(i=1;i<n;i++)    {        if(n%i==0)        s+=i;     }     if(s==n)     //这个数判断它是否等于它的真约数的和;若是标记flag=1;     flag=1;     return flag;}int main(){    int n,num1,num2,count,t,i;    scanf("%d",&n);    while(n--)    {      count=0;      scanf("%d %d",&num1,&num2);      if(num1>num2)      //判断num1和num2的大小,      {        t=num1;        num1=num2;        num2=t;       }    for(i=num1;i<=num2;i++)    {        if(judge(i))        //若是完数则count++        count++;    }    printf("%d\n",count);    }return 0;}


原创粉丝点击