Prietene

Se dau două numere naturale. Să se afle dacă aceste numere sunt prietene. Numerele prietene sunt perechile de numere în care fiecare număr în parte este suma tuturor divizorilor celuilalt număr, mai puțin acesta.

Date de intrare

Programul citește de la tastatură două numere a și b.

Date de ieșire

Programul va afișa pe ecran mesajul PRIETENE dacă cele două numere sunt prietene, respectiv NU SUNT PRIETENE dacă aceste numere nu sunt prietene.

Restricții și precizări

  • 1 ≤ a ≤ 100.000
  • 1 ≤ b ≤ 100.000

Exemplu

Intrare

220 284

Ieșire

PRIETENE

Explicație

Divizorii lui 220 sunt 1245101120224455 și 110, iar suma acestora este 284. Divizorii lui 284 sunt 12471 și 142, iar suma acestora este 220.

#include <iostream>

using namespace std;

int main()
{
    long long int n,s=0,d=1;
    cin>>n;
    for (int d = 1; d * d <= n; d++)
        if(n%d==0)
        {
            s+=d;
            if (d * d != n)
            {
                s += n / d;
            }
        }
    int m=n;
    cin>>n;
    int ss=s-m;
    s=0;
    for (int d = 1; d * d <= n; d++)
        if(n%d==0)
        {
            s+=d;
            if (d * d != n)
            {
                s += n / d;
            }
        }
    s-=n;
    if(s==m&&ss==n)
        cout <<"PRIETENE";
    else
        cout <<"NU SUNT PRIETENE";
    return 0;
}
%d bloggers like this: