331
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