做这个题的时候,思路很清晰,基本上就是一气呵成;只是在最后输出的格式上出了点小问题!


4-6-2015


至于题目,大家请前往这儿(http://acm.hdu.edu.cn/showproblem.php?pid=1406)



下面就是代码,若哪儿有不对或是什么建议,请各位观者不吝指出!

#include<iostream>
using namespace std;
int WanShu(int n)

{
int sum = 0;//所有因子的和

for(int i = 1; i < n; i++)
if(n % i == 0)
sum += i;

if(sum == n)//判断是否为完数
return 1;
else return 0;
}
int main()
{
int line;//行数
int num1, num2;//输入两个数
cin >> line;

if(line <= 0)
exit(-1);

for(int i = 0; i < line; i++)
{
int sum = 0; //完数的个数
cin >> num1 >> num2;

if(num1 > num2)//判断num1 和 num2 之间的大小 ,把大数放在num2当中
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}

if(num1 <= 0)
exit(-1);// 如果不是正整数,则退出

for(int j = num1 ; j <= num2; j++)
sum += WanShu(j);//累加完数的个数

if(i < line - 1)//格式控制。
cout << sum << endl;
else cout << sum;
}

cout << endl;
system("pause");
return 0;
}



运行结果:

3<span >  </span>//  3个例子
4 6<span > </span>// 查找[4,6]之间的完数个数
1<span > </span>// 一个,只有6
20 1<span > </span>//查找[1,20]之间的
1
1 5000
3
请按任意键继续. . .