做这个题的时候,思路很清晰,基本上就是一气呵成;只是在最后输出的格式上出了点小问题!
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 style="white-space:pre"> </span>// 3个例子
4 6<span style="white-space:pre"> </span>// 查找[4,6]之间的完数个数
1<span style="white-space:pre"> </span>// 一个,只有6
20 1<span style="white-space:pre"> </span>//查找[1,20]之间的
1
1 5000
3
请按任意键继续. . .