题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=681
//打表
#include <iostream>
#include <cstdio>
using namespace std;
int judge(int x)
{
int cnt =0;
int cdd=0;
for(int i=1;i<x;i++)
if(x%i==0)
cnt+=i;
for(int i=1;i<cnt;i++)
if(cnt%i==0)
cdd+=i;
if(cdd==x)
return cnt;
return 0;
}
int main()
{
for(int i=2;i<=5000000;i++)
{
if(judge(i)&&judge(i)>i)
printf("%d,%d,\n",i,judge(i));
}
return 0;
}
//处理
#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int fn[30][2]={
220,284,
1184,1210,
2620,2924,
5020,5564,
6232,6368,
10744,10856,
12285,14595,
17296,18416,
63020,76084,
66928,66992,
67095,71145,
69615,87633,
79750,88730,
100485,124155,
122265,139815,
122368,123152,
141664,153176,
142310,168730,
171856,176336,
176272,180848,
185368,203432,
196724,202444,
280540,365084,
308620,389924,
319550,430402,
356408,399592,
437456,455344,
469028,486178
};
int main()
{
int n,m,cnt;
while(~scanf("%d%d",&n,&m))
{
cnt=0;
for(int i=0;i<28;i++ )
if(fn[i][0]>=n&&fn[i][1]<=m)
cnt++;
printf("%d\n",cnt);
}
return 0;
}