Tester si un nomber entier positif est un nombre premier ou non

Contenu du snippet

ATTENTION : Ce code a été écrit sous Unix avec comme éditeur de texte Emacs.
Il répond au Standard C99 c'est pourquoi il faut le spécifier au compilateur car la plupart fonctionnent toujorus en ANSI par défault.
Exemple pour compiler (avec GCC sous Linux) : gcc --std=CC99 --pedantic -W -Wall nomdufichier.c
Le résultat sera par défault dans le fichier ./a.out, si vous voulez spécifiez le fichier de destination, rajouter
-o nomdufichier.
Les options W & Wall servent à afficher tous les warnings !

Ceci est mon premier programme et n'est pas du tout compliqué à comprendre...
Je scanne ce que l'utilisateur rentre et si les conditions (>=0) sont respectés alors je regarde s'il est premier.
Un moyen de le savoir et de faire une boucle qui par de i=2 jusqu'à la moitie du nombre et de s'arreter lorsque lenombre%i==0.
On analyse le i en sortie de la boucle et on imprime le résultat.

Source / Exemple :


#include <stdio.h>

int main() {
  char choix=0; //on laisse le choix à l'utilisateur de quitter ou pas
  int nbr,pgd; //nbr = nombre à analyser & pgd = plus grand diviseur
  
  while (choix!='q') //tant que l'on ne veut pas quitter...
    {
      printf("Entrez un nombre entier plus grand ou égale à 0 : ");
      scanf("%d",&nbr); //si l'utilisateur rentre un CHAR, nbr est <0 donc OK
      scanf("%c",&choix); //si l'utilisateur rentre q, on sort du programme
      
      if ((nbr<0) && (choix!='q')) printf("Le nombre doit être supérieur ou égale à 0 !\n");
      if (choix=='q') printf("Aurevoir\n");
      else  if ((nbr>=0) && (choix!='q'))  //on est dans les bonnes conditions de calcul de pgd
	{
	  //Calcul de Pgd
	  for (pgd=2;(pgd<=(nbr/2) && (nbr%pgd!=0));pgd++);

	  //Affichage selon le résultat
	  if (pgd>nbr/2)
	    {
	      if (nbr==0) printf("0 n'est pas premier, 1 le divise\n");
	      else  printf("%d est premier\n",nbr);    
	    }
	  else
	    {
	      printf("%d n'est pas premier, %d le divise\n",nbr,pgd);
	    }  //Fin affiche
	  printf("Entrez (q) pour quitter\n");
	}
    }
  return 0;
}

A voir également

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.