Test pierwszości
Cel
Sprawdzenie czy liczba jest pierwsza
Idea działania
Liczba jest pierwsza jeżeli jej dzielnikami są tylko 1 i ona sama. Możemy sprawdzić wszystkie liczby w przedziale
Zamiast tego możemy wygenerować liczby pierwsze za pomocą sita Eratostenesa i sprawdzić tylko je.
Zaczniemy od generowania liczb pierwszych w przedziale
Kiedy użyć?
Jeżeli mamy mało liczb, ale mogą być duże (np.
Jeżeli mamy dużo, ale stosunkowo małych liczb, to lepiej użyć sita.
Implementacja
#include <bits/stdc++.h>
using namespace std;
bool isPrime(vector<int> &primes, int& n){
for(auto& p: primes){
if(p * p > n) break;
if(n % p == 0) return false;
}
return true;
}
Złożoność
Czasowa:
Pamięciowa: