完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。
本题的任务是判断两个正整数之间完数的个数。
采用了C++来编写
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int *num = new int[n];//这里开辟了存储所有结果的数组
for (int i = 0; i < n; i++)
num[i] = 0;
int sum;
int i, j;
int num1, num2;
int temp;
for (i = 0; i < n; i++)
{
cin >> num1 >> num2;
if (num1 > num2)//将输入的两个数按大小排序使得程序可读
{
temp = num1;
num1 = num2;
num2 = temp;
}
for (num1; num1 <= num2; num1++)
{
sum = 0;
for (j = 1; j <=num1/2; j++)//(num/2)因为一个数没有大于自身二分之一的,减少了一半的计算量
{
if (num1%j == 0)
{
sum += j;
}
}
if (sum == num1)
num[i]++;
}
}
for (i = 0; i < n; i++)
cout << num[i] << endl;
}```