1406 完数.cpp
来自「威士忌的HDU题解.大概有260多题的源码。对于学习非常有好处。」· C++ 代码 · 共 51 行
CPP
51 行
/*
1406 完数
Time Limit : 1000 ms Memory Limit : 32768 K Output Limit : 256 K
15 MS 344 KB 874 B
GUN C++
*/
#include <iostream.h>
#include <math.h>
using namespace std;
const int Max=10000;
int test(int n)
{
int i,sum=0;
int t=(int)sqrt(n);//类似于折半查找
for(i=2;i<=t;i++)
{
if(n%i==0)//判断n是否为素数,如果是素数就不是完数
{
if(n/i!=i) sum+=i+n/i;
else sum+=n/i;
}
}
sum+=1;
if(sum==n) return 1;
else return 0;
}
int main()
{
int t,ca,num1,num2,cb,temp;
int ans;
cin>>t;
for(ca=0;ca<t;ca++)
{
cin>>num1>>num2;
if(num1>num2)
{ temp=num1;num1=num2;num2=temp;}
for(cb=num1,ans=0;cb<=num2;cb++)
{
if(test(cb)==1)
{ ans++;}
}
cout<<ans<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?