Nombres premiers

Présentation
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.
Téléchargement
0  0 
Téléchargé 14 fois Voir les 5 commentaires
Détails
Catégories : Mathématiques
Avatar de munstef
Membre habitué
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 24 janvier 2017




Avatar de LittleWhite 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 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 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 droggo droggo - Expert confirmé https://www.developpez.com
le 25/07/2013 à 14:57
Goa,

Et une fois de plus, une boucle qui progresse par pas de 1, et donc passe systématiquement par tous les nombres pairs.
Avatar de munstef 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.
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web