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;}