NOMBRE PREMIER

Signaler
Messages postés
202
Date d'inscription
vendredi 6 juillet 2001
Statut
Membre
Dernière intervention
31 octobre 2007
-
TRAX44
Messages postés
93
Date d'inscription
mercredi 18 septembre 2002
Statut
Membre
Dernière intervention
20 juillet 2006
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9598-nombre-premier

TRAX44
Messages postés
93
Date d'inscription
mercredi 18 septembre 2002
Statut
Membre
Dernière intervention
20 juillet 2006

le seul nombre pair et premier que je connaisse est 2 alors compté de deux en deux divise le nombre de calcule par deux :)
Sinon utilisé la racine du nombre n'est peut etre pas une bonne idée :
un racine prend du temps a etre calculer mais n'est calculé qu'un fois par nombre a tester. Dans le cas contraire faire le teste avec le carré de i et le nombre a tester

Cordialment
trax
The Waxy Man
Messages postés
26
Date d'inscription
lundi 24 septembre 2001
Statut
Membre
Dernière intervention
6 novembre 2003

Aufait, mon but était de fais un prog en C et pas en C++ donc les "cout" ne sont pas au programme.
et aussi, j'ai relu le prog et je me rend compte que je l'ai refait avec un while:

/*
Programme qui dit si un nb est 1e ou pas.
Un nb 1e est divisible par 1 et par lui meme.
1 n'est pas un nb 1e.

Seul nombre%nombre peut valoir 0 ainsi que nombre%1

*/

/*drapeau doit valoir 2 car il y a 2 conditions pour les nbs 1e
on ne teste que de 1 à 10 (dans le for) car les autres nbs sont des multiples
quand on passe dans le for, si le nb est < que 10, il est ajouté à drapeau car il est divisible par lui meme
Mais si le nb est > que 10 alors il n'est pas compté. Et comme tout les nombres sont divisibles par eux meme,
on ajoute 1 pour tout les nbs > que 10.*/

/* drapeau peut aussi s'appeler compteur */



#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{

int nombre;
int i;
int drapeau;
char reponse='O';


while (reponse=='O')
{





clrscr();
drapeau=0;
printf("Veuillez entrer un nombre :
> ");
scanf("%d",&nombre);

switch(nombre)
{
case 1: break; // il va directement à else printf("

ce n'est pas un 1e!");
default: for (i=1;i<11;i++)
{
if (nombre%i==0) drapeau++;
printf("
\%d mod %d donne %d",nombre,i,nombre%i);
}
}

if (nombre>10) drapeau ++;
if (drapeau==2)
printf("

c'est un 1e");
else printf("

ce n'est pas un 1e!");


printf("

Voulez vous recommencer ? <O/N>
>");
reponse=toupper(getch());
}



return 0;
}


Et aussi, il me semble que le prog fonctionne tres bien.. je l'ai testé avec une dixaine de nbs mais j'ai pas été jusqu'au million ;-)
The Waxy Man
Messages postés
26
Date d'inscription
lundi 24 septembre 2001
Statut
Membre
Dernière intervention
6 novembre 2003

merci pour toutes vos remarque.
Ca ne fais que 2 mois que je fais du C alors désolé pour les fautes.
Merci pour votre aide !! @+
ADPro22
Messages postés
127
Date d'inscription
mercredi 18 juillet 2001
Statut
Membre
Dernière intervention
27 octobre 2004

la boucle for, c'est : for(int i=2; i<=racine; i++)
(inferieur ou egal a racine)