完数的定义:
如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14
本题任务是判断两个正整数之间完数的个数
输入
输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成
(1<num1,num2<=10000)
输出
对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数
样例输入
2
2 5
5 7
样例输出
0
1
#include <iostream>
using namespace std;
int wanshu(int n)
{
int i,sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(n==sum)
return 1;
return 0;
}
int main()
{
int n;
int a,b;
cin>>n;
for(int i=0;i<n;++i)
{
int sum=0;
cin>>a>>b;
for(int j=a;j<=b;++j)
sum+=wanshu(j);
cout<<sum<<endl;
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
int m,n,k,count,t,j,x,sum;
scanf("%d",&k);
for(int i=0;i<k;i++){
scanf("%d%d",&m,&n);
count=0;
if(m>n) {t=m;m=n;n=t;}
for(j=m;j<=n;j++){
sum=0;
for(x=1;x<=j/2;x++){
if(j%x==0) sum+=x;
}
if(sum==j) count++;
}
printf("%d\n",count);
}
return 0;
}
int wanshu(int n)
{
int i,sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(n==sum)
return 1;
return 0;
}
int main()
{
int n;
int a,b;
scanf("%d",&n);
for(int i=0;i<n;++i)
{
int sum=0;
scanf("%d %d",&a,&b);
for(int j=a;j<=b;++j)
sum+=wanshu(j);
printf("%d\n",sum);
}
return 0;
}