-
Nombres premiers
Bonjour,
Je vous propose un nouvel élément à utiliser : Nombres premiers
bool is_prime(unsigned long long p)
renvoie true si p est premier ( n'est pas 2 ni trois de 3 et non multiple 6n±1 ≤ √p avec n>= 1 et n entier)
vector first_primes(vector::size_type value)
renvoie les value premiers entiers; il ajoute les entiers 6n±1 en vérifiant s'il n'est pas multiples des premiers nombres premiers déjà calculés
Qu'en pensez-vous ?
-
Bonjour,
J'aurais passé le std::vector en référence, au lieu de le passé en copie et de le retourner.
-
En C++11 le vector retourné sera déplacé et non copié. Donc ca me semblerait OK pour moi.
-
Oui, j'avais oublié ce détail.
Mais bon, première ligne de la fonction :
Code:
vector<unsigned long long> result(value);
Ça fait lourd, je trouve (du moins dans l'idée).
-
Goa,
Et une fois de plus, une boucle qui progresse par pas de 1, et donc passe systématiquement par tous les nombres pairs. :mrgreen:
-
@Goa
"Et une fois de plus, une boucle qui progresse par pas de 1, et donc passe systématiquement par tous les nombres pairs."
pour is_prime
il vérifie s'il nest pas multiple de 2 et qu'il ne soit pas 2
même chose pour 3
puis verifie s'il n'est pas multiple de 6n±1 en commençant par n = 1 soit (5, 7, 11, 13, 17, 19, 23, 25) où sont les nombres pairs ?
pourquoi 6n ± 1 :
6n + 1 peut être premier
6n + 2 est pair donc non premier
6n + 3 est multiple de trois
6n + 4 est pair
6n + 5 peut être premier