问题描述
如果一个数所有的真因子(即除自己以外的约数)之和等于自己,这个数称之为完全数。
例如:6=1+2+3,就是完全数。
现在小童想知道n和m之间完全数有多少个?
输入格式
一行两个正整数n和m,空格隔开。
其中 1≤n≤m≤5∗104
输出格式
一行一个正整数,表示n和m之间有多少个完全数。
输入样例1
1 100
输出样例12
CODE
#include<iostream>
using namespace std;
int main()
{
long long a,s,m=0,o=0;
cin>>a>>s;
if(a<=s)
{
for(int i=a;i<=s;i++)
{
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
{
m=m+j;
}
}
if(m==i)
o++;
m=0;
}
cout<<o<<endl;
}
else
{
for(int i=s;i<=a;i++)
{
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
{
m=m+j;
}
}
if(m==i)
o++;
m=0;
}
cout<<o<<endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int n,m,i,s1=0,j,s2=0;
cin>>n>>m;
for(i=n+1;i<m;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0)
{
s1=s1+j;
}
}
if(s1==i)
{
s2++;
}
s1=0;
}
cout<<s2;
return 0;
}