Vérifier si un nombre entier est un nombre premier en C

Dernière mise à jour le 12 novembre 2009 à 13:01 par marlalapocket
Publié par lami20j


Définition nombre premier


Un nombre premier est un entier naturel, qui se divise seulement par 1 et lui-même.

Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés

  • les diviseurs compris entre 2 et N-1 seront testés

/**************************\

 *  nombre_premier1.c     *
\**************************/

/* algorithme : teste tous les diviseurs */
#include <stdio.h>


int main (void)
{
  int i, nb, compter, test;
  test = compter = 0;
  printf ("Entrez un nombre entier : ");
  if (scanf ("%d", &nb) != 1)
    return -1;

  for (i = 2; i < nb; i++, compter++)
    if (nb % i == 0)
      test = 1;
  if (!test)
    printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
  else
    printf ("%d n'est pas nombre premier, nombre iterations = %d\n", nb,compter);
  return 0;
}


Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs

  • les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs

/**************************\

 *    nombre_premier2.c   *
\**************************/

/* algorithme : exclure les nombres pairs et

 *    teste tous les diviseurs */
#include <stdio.h>


int main (void)
{
  int i, nb, compter, test;
  test = compter = 0;
  printf ("Entrez un nombre entier : ");
  if (scanf ("%d", &nb) != 1)
    return -1;

  if (nb % 2 == 0)
          test = 1;
  else{
      for (i = 3 ; i < nb; i+=2, compter++)
        if (nb % i == 0)
          test = 1;
  }
  if (!test)
          printf ("%d nombre premier, nombre iterations = %d\n",
                          nb, compter);
  else
          printf ("%d n'est pas nombre premier, nombre iterations = %d\n",nb, compter);
  return 0;
}

Algorithme 3 : les diviseurs impairs jusqu'à la racine carrée du N seront testés

  • les diviseurs impairs jusqu'à la racine carrée du N seront testés

/**************************\

 *    nombre_premier3.c   *
\**************************/

/* algorithme : exclure les nombres pairs et

 * teste tous les diviseurs jusqu'à la racine carrée */
#include <stdio.h>
#include <math.h>

int main (void)
{
  int i, nb, compter, test,limite;
  test = compter = 0;
  printf ("Entrez un nombre entier : ");
  if (scanf ("%d", &nb) != 1)
    return -1;
  limite = sqrt(nb) + 1;

  if (nb % 2 == 0)
          test = 1;
  else{
      for (i = 3 ; i < limite; i+=2, compter++)
        if (nb % i == 0)
          test = 1;
  }
  if (!test)
          printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
  else
          printf ("%d n'est pas nombre premier, nombre iterations = %d\n",nb, compter);
  return 0;
}

Algorithme4 : arrêt du programme quand un diviseur est trouvé

  • arrêt du programme quand un diviseur est trouvé

/**************************\

 *    nombre_premier4.c   *
\**************************/

/* algorithme : exclure les nombres pairs et

 * teste tous les diviseurs jusqu'à la racine carrée
 * et sortie de la boucle au 1er diviseur trouvé */
#include <stdio.h>
#include <math.h>

int main (void)
{
  int i, nb, compter, test,limite;
  test = compter = 0;
  printf ("Entrez un nombre entier : ");
  if (scanf ("%d", &nb) != 1)
    return -1;
  limite = sqrt(nb) + 1;

  if (nb % 2 == 0)
          test = 1;
  else{
      for (i = 3 ; i < limite && ! test; i+=2, compter++)
        if (nb % i == 0)
          test = 1;
  }
  if (!test)
          printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
  else
          printf ("%d n'est pas nombre premier, nombre iterations = %d\n", nb, compter);
  return 0;
}
Meilleures réponses pour « Vérifier si un nombre entier est un nombre premier en C » dans :
Conversion d'un nombre entier 32 bits en IP VoirConversion d'un nombre entier 32 bits en IP Nombre à convertir : 3265917058 Représentation binaire 11000010 10101001 11110000 10000010 - 3265917058 00000000 00000000 00000000 11000010 - 3265917058 >> 24 ( 194 ) 11000010 10101001 11110000...
Comment vérifier si mon antivirus est actif ? VoirLe test Si vous avez des doutes sur le fait que votre antivirus soit actif, il vous suffit de télécharger le fichier suivant: http://www.eicar.org/download/eicar_com.zip Si votre antivirus bloque le téléchargement et vous affiche une alerte,...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...