IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 2 fois
Vote des utilisateurs
0 
0 
Détails
Licence : Non renseignée
Mise en ligne le 24 janvier 2017
Langue : Français
Référencé dans
Navigation

Nombres premiers

Code incluant deux fonctions :
  • is_prime déterminant si un nombre est premier
  • first_primes retournant les N premiers nombres premiers
Nos ressources disponibles
Code C++ : Sélectionner tout
bool is_prime(unsigned long long p)
renvoie true si p est premier (n'est pas 2 ni 3 et non multiple 6n±1 ≤ √p avec n>= 1 et n entier).

Code C++ : Sélectionner tout
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.
Avatar de munstef
Membre habitué https://www.developpez.com
Le 24/07/2013 à 11:24
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 ?
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 25/07/2013 à 10:02
Bonjour,

J'aurais passé le std::vector en référence, au lieu de le passé en copie et de le retourner.
Avatar de iNaKoll
Membre régulier https://www.developpez.com
Le 25/07/2013 à 10:43
En C++11 le vector retourné sera déplacé et non copié. Donc ca me semblerait OK pour moi.
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 25/07/2013 à 11:06
Oui, j'avais oublié ce détail.
Mais bon, première ligne de la fonction :
Code : Sélectionner tout
vector<unsigned long long> result(value);
Ça fait lourd, je trouve (du moins dans l'idée).
Avatar de munstef
Membre habitué https://www.developpez.com
Le 28/07/2013 à 7:08
"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
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.