fbpx

Problema #2769 – TREIprime – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un număr natural n care este produs de trei numere prime distincte. Ştiind că există m numere naturale prime cu n şi mai mici decât acesta, să se afişeze în ordine crescătoare cele trei numere prime din descompunerea lui n.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran numerele prime din descompunerea lui n.

Restricții și precizări

  • 1 ≤ m ≤ n ≤ 1018

Exemplu

Intrare

66 20

Ieșire

2 3 11

Explicație

Avem 66=2•3•11 şi există 20 de numere prime cu 66, mai mici decât acesta.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long int x , y , n , m , p , q;
    cin >> x >> y;
    int d = 2;
    while(x % d) d++;
    n=x/d;
    m=y/(d-1);
    long long int delta = (n+1-m) * (n+1-m) - 4*n;
    long long int r = sqrt(delta);
    p = (n + 1 - m - r) / 2;
    q = (n + 1 - m + r) / 2;
    cout << d << ' ' << p << ' ' << q;
    return 0;
}
Comentarii

S-ar putea sa iti placa