fbpx

Problema #435 – FactoriPrimi – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dau două numere naturale nenule. Să se verifice dacă cele două numere au exact aceiași factor primi, indiferent de puterea acestora.

Date de intrare

Programul citește de la tastatură numerele n și m.

Date de ieşire

Programul afișează pe ecran mesajul DA, dacă cele două numere au exact aceiași factori primi, respectiv NU în caz contrar.

Restricţii şi precizări

  • cele două numere citite vor fi mai mici decât 2 30

Exemplu 1:

Intrare

72 48

Ieșire

DA

Explicație

72 și 48 au exact aceiași factori primi: 2 3.

Exemplu 2:

Intrare

72 30

Ieșire

NU

Explicație

Factorii primi ai lui 72 sunt 2 3, iar factorii primi ai lui 30 sunt 2 3 5.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    bool aceiasi_factori = true;
    int d = 2;
    while(a > 1){
        int p = 0;
        if(a % d == 0){
            if(b % d != 0){
                aceiasi_factori = false;
            }
            while(a % d == 0)
                a /= d;
            while(b % d == 0)
                b /= d;
        }
        d++;
        if(d * d > a)
            d = a;
    }
    if(aceiasi_factori && b == 1)
        cout << "DA";
    else
        cout << "NU";
    return 0;
}
Comentarii

S-ar putea sa iti placa