Решение задачи "Дружественные числа" с Меньшиков

Без пояснения   Просмотров: 14


Два различных натуральных числа называются дружественными, если первое из них равно сумме делителей второго числа, за исключением самого второго числа, а второе равно сумме делителей первого числа, за исключением самого первого числа. Требуется найти все пары дружественных чисел, оба из которых принадлежат промежутку от M до N.

Код

#include <iostream>
#include <vector>
#include <cmath>
 
using namespace std;
int mas[40][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},
    {503056, 514736},
    {522405, 525915},
    {600392, 669688},
    {609928, 686072},
    {624184, 691256},
    {635624, 712216},
    {643336, 652664},
    {667964, 783556},
    {726104, 796696},
    {802725, 863835},
    {879712, 901424},
    {898216, 980984}
};
int main()
{
    int m,n;
    cin>>m>>n;
    bool isExist = false;
    for (int i=0;i<40;i++)
    {
        int f = mas[i][0];
        int s = mas[i][1];
        if (m<=f && f<=n &&
            m<=s && s<=n)
        {
            cout<<f<<' '<<s<<endl;
            isExist = true;
        }
    }
    if (!isExist)
        cout<<"Absent";
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться