IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

code programmation c pour verifier un nombre premier et calculer le nombre premier de Mersene

salutation a tous et a toutes

je pratique la programmation c.
j'ecris un petit programme qui determine si un nombre est premier et qui calcule le nombre premier de Mersene.
ce programme verifie bien pour les nombres de 2 a 31.
il arrive que au dela de 31 il donne des resultats negatifs.
comment vous pourrez m'aider svp

tous mes remerciements

Tsiklag
Avatar de Daïmanu
Membre émérite https://www.developpez.com
Le 13/06/2019 à 17:31
Si mes calculs sont bons, 2^267464839 - 1 est un nombre énorme avec 900 millions de chiffres.
Calculer la racine carré de ce nombre donne un nombre à 30 000 chiffres.

C'est beaucoup, je ne suis pas sur que ton PC arrivera à traiter ces nombres immenses, ou alors n’importe quel algorithme prendra une éternité à s'exécuter.
Avatar de pjlan
Membre actif https://www.developpez.com
Le 12/06/2019 à 9:45
Très juste d'ailleurs le type int peut même être limité a -215 à +215-1 selon l'architecture cible.
Dans limits.h il y a INT_MIN et INT_MAX pour connaitre les valeurs acceptées par ce type sur l'architecture utilisée.
Avatar de droggo
Expert confirmé https://www.developpez.com
Le 13/06/2019 à 14:20
Bonjour,
Citation Envoyé par Tsiklag Voir le message
merci pour les messages
ce que j'aurai besoin c'est: comment utilise un nombre plus grand. par exemple si je pourai verifier si ce nombre est premier 2^267464839 - 1
Il y a des bibliothèques multi-précision, permettant de calculer avec des nombres de taille uniquement limitée par les ressources de ton ordi.

La plus connue est GMP, facile à trouver, je te laisse donc chercher.
Avatar de dalfab
Expert éminent https://www.developpez.com
Le 14/06/2019 à 13:37
Ce nombre n'est-il pas le plus grand nombre premier connu?
Ça a dû être prouvé en utilisant des méthodes toutes autres que l'algorithme d'Euclide.

Par la méthode standard, je pense qu'il faudra attendre plusieurs siècles de calcul avec le meilleur PC du jour pour déterminer cela (ouais, on est bien dans une éternité pour nous autres simples mortels.)
Viser les nombres de Mersenne jusqu'à M63 n'est déjà pas si mal.
Avatar de droggo
Expert confirmé https://www.developpez.com
Le 15/06/2019 à 19:34
Bonjour,

Effectivement, il y a des algorithmes spécifiques pour tester la primalité des nombres de Mersene.

Je ne connais pas leur principe, seulement qu'ils existent.
Avatar de Tsiklag
Nouveau membre du Club https://www.developpez.com
Le 12/06/2019 à 3:08
Salutation à tous et à toutes

je pratique la programmation c.

j'écris un petit programme qui détermine si un nombre est premier et qui calcule le nombre premier de Mersene.

ce programme vérifie bien pour les nombres de 2 à 31.

il arrive que au delà de 31 il donne des résultats négatifs.

comment vous pourrez m'aider svp

tous mes remerciements

Tsiklag
Avatar de pjlan
Membre actif https://www.developpez.com
Le 12/06/2019 à 9:08
Bonjour, Le lien ne fonctionne pas il serait plus facile d'utiliser les balise CODE pour poster le code.
Avatar de Tsiklag
Nouveau membre du Club https://www.developpez.com
Le 12/06/2019 à 22:45
Citation Envoyé par pjlan Voir le message
Très juste d'ailleurs le type int peut même être limité a -215 à +215-1 selon l'architecture cible.
Dans limits.h il y a INT_MIN et INT_MAX pour connaitre les valeurs acceptées par ce type sur l'architecture utilisée.
merci pour les messages
ce que j'aurai besoin c'est: comment utilise un nombre plus grand. par exemple si je pourai verifier si ce nombre est premier 2^267464839 - 1
Avatar de Tsiklag
Nouveau membre du Club https://www.developpez.com
Le 28/06/2019 à 1:19
merci pour les reponses.
surtout pour le programme GMP
je l'ai deja telecharger
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.