当前位置: 代码迷 >> 综合 >> 综合实践九1003完数AC
  详细解决方案

综合实践九1003完数AC

热度:48   发布时间:2023-10-15 19:58:59.0
  

完数

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 183   Accepted Submission(s) : 115
Problem Description
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。本题的任务是判断两个正整数之间完数的个数。
Input
输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) 。
Output
对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。
Sample Input
     
2 2 5 5 7

Sample Output
     
0 1


#include<iostream>
using namespace std;
int main()
{
int  num,m,n,a,i,j,count=0,sum=0;
cin >> num;
while (num--)
{
cin >> m >> n;
if (m > n){
a = m;
m = n;
n = a;
}//判断m,n大小,若输入m>n的情况,将m,n值交换。这一步不会,经谢补员指点才想起来。
for (j = m; j <= n; j++)
{
for (i = 1; i < j; i++)
{
if (j%i == 0)
sum = sum + i;
}
if (j == sum)
count++;


sum = 0;
}
cout << count << endl;
count = 0;

}
system("pause");
return 0;
}