Génération de nombres premiers et stockage dans un fichier

Soyez le premier à donner votre avis sur cette source.

Vue 5 459 fois - Téléchargée 430 fois

Description

Ce programme génère et affiche les 99.999.999 premiers nombres premiers, et les stocke dans une liste. Si l'on arrête le programme en cours de génération, celui-ci lors de son prochain redémarage chargera la liste des nombres premiers déjà calculés, stockés dans un fichier (LstPriNb.lst), et continuera la génération. Avec le commutateur /L, vous pouvez afficher les nombres premiers enregistrés dans le fichier de liste (LstPriNb.lst). Le commutateur /? permet d'afficher l'aide (certes très légère...).
Auteurs :
H.B.(aka. Bélusch) et N.F.(aka. Fleufleu).
Algorithme mis au point par N.F.(aka. Fleufleu) et optimisé par H.B.(aka. Bélusch).

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
239
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
20 avril 2009

Bonjour,

C'est tres joli et bien ecrit, mais l'algorithme est tres basique, et loin d'etre le plus performant.

Vous devriez regarder du cote du cribble d'Erastothene (il y a un exemple ici: http://www.cppfrance.com/code.aspx?ID=10645 (mais je ne l'ai pas regarde en details. Inspirez vous surtout de l'algo)).

Le principal defaut du cribble est que si vous voulez le nieme nombre premier, vous devez d'abord calculer les n-1 precedents, mais vu que votre programme genere une liste, ca ne devrait pas poser de problemes.

Deux petits conseils d'optimisation:
- Les nombres pairs ne sont jamais premiers (a part 2), donc vous pouvez utiliser un tableau deux fois plus petit (il suffit d'ajouter a la main 1 et 2 au debut de votre liste, puis si le cribble trouve le chiffre c comme premier, vous ajoutez a votre liste (2*c)+1 et de cribbler le tableau tous les (2*c+1)).
- Les 3-4 premieres iterations du tableau prennent pratiquement plus de temps que les millions suivantes. Apres les avoir realisees, si vous regardez le contenu du tableau, vous remarquerez que son contenu se repete tous les 20-30 caracteres (si vous stockez un bit pour chaque element). Il est donc tres efficace de preremplir ce tableau avec en dur le motif qui se repete, puis de d'emarer les iterations.

Bonne chance avec les nombres premiers :o)
Eric

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.