本文主要是介绍hdu-1406-完数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//法一
#include<stdio.h>
int wanshu(int a,int b)
{
int i,j,m,sum;
m=0;
for(i=a;i<=b;i++)
{
sum=0;
for(j=1;j<i;j++)
if(i%j==0)
sum+=j;
if(sum==i)
m++;
}
return m;
}
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int n1,n2,t;
scanf("%d%d",&n1,&n2);
if(n1>n2)
{
t=n1;
n1=n2;
n2=t;
}
printf("%d\n",wanshu(n1,n2));
}
return 0;
}
//法二
#include<stdio.h>
int a[10000]={0};
void wanshu()
{
int i,j,sum;
for(i=2;i<10000;i++)
{
sum=0;
a[i]=a[i-1];
for(j=1;j<i;j++)
if(i%j==0)
sum+=j;
if(sum==i)
a[i]++;
}
}
int main()
{
int s;
wanshu();
scanf("%d",&s);
while(s--)
{
int n1,n2,t;
scanf("%d%d",&n1,&n2);
if(n1>n2)
{
t=n1;
n1=n2;
n2=t;
}
printf("%d\n",a[n2]-a[n1-1]);
}
return 0;
}
这篇关于hdu-1406-完数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!