Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1480 connectés 

  FORUM HardWare.fr
  Programmation

  Nombres prmier en C encore un truc SVP!???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombres prmier en C encore un truc SVP!???

n°96501
vendeeman
Posté le 04-02-2002 à 13:07:03  profilanswer
 

Je cherche à faire un prog qui verifie si un nombre est premier: can youy help me please!
Merci d'avance!

 

[edtdd]--Message édité par vendeeman--[/edtdd]

mood
Publicité
Posté le 04-02-2002 à 13:07:03  profilanswer
 

n°96507
HelloWorld
Salut tout le monde!
Posté le 04-02-2002 à 13:18:44  profilanswer
 

Je viens de rendre un projet de cryptage RSA, donc basé sur les nombres premiers ... ;)
Voici l'algo :
y'a pas 36 solutions, pour un nombre N, faut tester s'il est divisibles par tous les nombres de 2 à N-1 !
s'il n'y a aucun nombre, alors il est premier.
2 améliorations:
une évidente : on travaille uniquement avec les nombres impairs
 
for(i = 3; i < N; i += 2) ...
 
la deuxieme, faut le savoir:
 
au lieu de s'arreter à N-1, on s'arrete à SQRT(N) (sa racine carré)
ben ouai, c'est comme ça, si on a rien trouvé jusqu'à sa racine, on en trouvera pas après !
 
du coup:

Code :
  1. // soit un unsigned long int N à tester
  2.     int i, premier = 1;
  3.     long racine = sqrt(N);
  4.     for(i = 3; i <= racine; i += 2)
  5.     {
  6.         if((N % i) == 0)    // si reste division == 0
  7.         {
  8.             premier = 0;
  9.             break;
  10.         }
  11.     }


 
j'ai fait vite, mais je crois que c'est ça !


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°96509
flo850
moi je
Posté le 04-02-2002 à 13:19:21  profilanswer
 

int isPremier(int n)
{
   int i;
    for(i=2;i<n;i++)
          if(n%i==0)
             return 0;
    return 1;
}
 
voial la fonction bourrine, je te laisse l'ameliorer


---------------

n°96512
LeGreg
Posté le 04-02-2002 à 13:24:17  profilanswer
 

Un peu optimise:

Code :
  1. int isPremier(int n)
  2. {
  3.    if (n%2==0) return 0;
  4.    int i = 3;
  5.    while (i*i<=n) {
  6.       if(n%i==0)
  7.              return 0;
  8.       i+=2;
  9.    }
  10.    return 1;
  11. }


 
A+
LEGREG

n°96537
vendeeman
Posté le 04-02-2002 à 13:57:16  profilanswer
 

et pour afficher les 100 premiers entiers vous faites comment: merci pour votre aide CCCAAAAA MMMAAARRCCCHHHEEE!!!!

n°96583
vendeeman
Posté le 04-02-2002 à 14:59:08  profilanswer
 

svp, ça urge! :)

n°96590
chrisbk
-
Posté le 04-02-2002 à 15:16:13  profilanswer
 

pour afficher les 100 premier nb entier ?  
ben tu boucles !

n°96600
Olivier51
Posté le 04-02-2002 à 15:30:21  profilanswer
 

Pour l'optimisation, n'oublie pas la racine et de vérifier si ton nombre est divisible par 2 (donc tu commencera ta boucle de diviseur à 3, si il n'est pas divisible par 2).
 
Si tu recherches d'autres algo sur les nombres entiers va voir le doc que j'ai écrit pour le site http://www.codeur.org, voici l'adresse :
http://www.codeur.org/doc/doc.php?ID=12

 

[edtdd]--Message édité par Olivier51--[/edtdd]

n°96603
LeGreg
Posté le 04-02-2002 à 15:32:13  profilanswer
 

vendeeman a écrit a écrit :

svp, ça urge! :)  




 
pourquoi ton tp il finit a quelle heure?
 
LEGREG

n°96611
Kristoph
Posté le 04-02-2002 à 15:42:10  profilanswer
 

Vous devriez resortir vos bouqins sur la crypto. Quand on veut générer un nombre premier de grande taille, on ne se permet pas de tester la division par tout les nombres entiers impairs, du moins pas au début.
 
Il y a des techniques compliquées mais généralement en log n qui permettent de dire rapidement qu'un nombre n'est pas premier. La subtilitée c'est qu'elles ne permettent pas de dire qu'un nombre EST premier :). Ca c'est des vieux souvenirs, je suis incapable maintenant de te donner le nom de ces algo :/. Si quelqu'un se rappelle, qu'il se manifeste svp
 
Une technique quand meme, tu généres un bon millier de nombres aléatoires et tu testes si le ppcm 2 à 2 de ces nombre et de ton candidat vaut 1. S'il vaut autre chose que 1 c'est que ton nombre n'est pas premier.
 
ppcm : Plus Petit Commun Multiple

mood
Publicité
Posté le 04-02-2002 à 15:42:10  profilanswer
 

n°96787
wpk
Posté le 05-02-2002 à 00:42:39  profilanswer
 

Kristoph a écrit a écrit :

Vous devriez resortir vos bouqins sur la crypto. Quand on veut générer un nombre premier de grande taille, on ne se permet pas de tester la division par tout les nombres entiers impairs, du moins pas au début.
 
Il y a des techniques compliquées mais généralement en log n qui permettent de dire rapidement qu'un nombre n'est pas premier. La subtilitée c'est qu'elles ne permettent pas de dire qu'un nombre EST premier :). Ca c'est des vieux souvenirs, je suis incapable maintenant de te donner le nom de ces algo :/. Si quelqu'un se rappelle, qu'il se manifeste svp
 
Une technique quand meme, tu généres un bon millier de nombres aléatoires et tu testes si le ppcm 2 à 2 de ces nombre et de ton candidat vaut 1. S'il vaut autre chose que 1 c'est que ton nombre n'est pas premier.
 
ppcm : Plus Petit Commun Multiple  




 
c'est meme plus complique que ca, il existe des tests de primalité (bcp bcp plus rapides que la methode triviale), pour les tres grands nombres qui fournissent une reponse  probabiliste pour savoir si oui ou non un nb est premier.
Cherche des infos autour du : test de fermat ou solovay-strassen ou miller-rabin (le dernier doit etre le meilleur des 3 si mes souvenirs sont bons). Ensuite, si tu veux des methodes sures, il me semble qu'il y a d'autres tests utilisant les courbes eliptiques mais c'est encore un peu plus compliqué...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Nombres prmier en C encore un truc SVP!???

 

Sujets relatifs
Conversion de nombres[SQL] Truc tout con qui m'enerve...
[CppBuilder/C++] Encore un truc a la con...[java ,linux] comment gérer un truc comme ça ?
AIDEZ MOI SVP[VB] truc hyper balaise avec les dates, enfin pour moi
[VB] un truc balèzeHTML... truc tout con.....
[javascript] popup .... un truc bizarre ... 
Plus de sujets relatifs à : Nombres prmier en C encore un truc SVP!???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR