begin process at 2010 02 10 15:33:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > NOMBRE PREMIER

NOMBRE PREMIER


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :nombrepremier, primenumber, mathématiques, maths, mathematiques Niveau :Débutant Date de création :04/04/2002 Date de mise à jour :04/04/2002 02:34:04 Vu :2 074

Auteur : The Waxy Man

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

C'est un code qui permet de savoir si un nombre est 1e. C'est assez basique mais utile pour les débutants.
Si vous trouvez comment l'aléger ou si il y a un bug, contactez moi !

Source

  • /*
  • 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 etre considéré comme un compteur */
  • #include <stdio.h>
  • #include <conio.h>
  • main()
  • {
  • int nombre;
  • int i;
  • int drapeau;
  • char reponse;
  • prog:
  • clrscr();
  • drapeau=0;
  • printf("Veuillez entrer un nombre : \n> ");
  • scanf("%d",&nombre);
  • switch(nombre)
  • {
  • case 1: printf("\n\n\tLe nombre n'est pas 1e"); goto recommencer;
  • default: for (i=1;i<11;i++)
  • {
  • if (nombre%i==0) drapeau++;
  • printf("\n\%d mod %d donne %d",nombre,i,nombre%i);
  • }
  • }
  • if (nombre>10) drapeau ++;
  • if (drapeau==2)
  • printf("\n\nc'est un 1e");
  • else printf("\n\nce n'est pas un 1e!");
  • recommencer:
  • printf("\n\nVoulez vous recommencer ? <O/N>");
  • reponse=getche();
  • switch(reponse)
  • {
  • case 'o': goto prog;
  • case 'O': goto prog;
  • case 'N': break;
  • case 'n': break;
  • default : goto recommencer;
  • }
  • ;
  • return 0;
  • }
/*
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 etre considéré comme un compteur */



#include <stdio.h>
#include <conio.h>

main()
{

   int nombre;
   int i;
   int drapeau;
   char reponse;


prog:

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

   switch(nombre)
   		{
   		case 1:	  printf("\n\n\tLe nombre n'est pas 1e"); goto recommencer;
   		default:  for (i=1;i<11;i++) 					
                                           {
   	                     		     if (nombre%i==0) drapeau++;
                                             printf("\n\%d mod %d donne %d",nombre,i,nombre%i);
					   }
   		}
                                        
   if (nombre>10) drapeau ++;
   if (drapeau==2)      
   			printf("\n\nc'est un 1e");
   			else printf("\n\nce n'est pas un 1e!");

recommencer:
   printf("\n\nVoulez vous recommencer ? <O/N>");
   reponse=getche();                       
			switch(reponse)
                        {
			case 'o': goto prog;
			case 'O': goto prog; 
			case 'N': break;
			case 'n': break;
                        default :  goto recommencer;
			}  
;

return 0;
} 

 Conclusion

les explications sont en haut du code source.  


 Sources de la même categorie

Source avec Zip OPERATION SUR LES MATRICES CARREES AVEC CLASSE GENERIQUE par chouhad
Source avec une capture OPÉRATIONS SUR MATRICES C++ par Minilogus
[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL par Jhep
PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
EVALUER UNE EXPRESSION MATHÉMATIQUE par begueradj

 Sources en rapport avec celle ci

[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL par Jhep
Source avec une capture MULTIPLICATIONS: PETIT EXERCICE DE MATHS par gmorris
Source avec Zip Source avec une capture RESOLUTION DE SYSTEME LINEAIRE PAR LA METHODE DU GRADIENT CO... par zangul
Source avec Zip COMPILATEUR ET DÉCOMPILATEUR DE SOURCES MALBOLGE [MLBC] par youscef
Source avec Zip BLOP DIRECT X par f_l_a_s_h_b_a_c_k

Commentaires et avis

Commentaire de Thaeron le 04/04/2002 18:02:54

J'ai pas testé ton code mais je ne suis pas certain que ta routine soit tres bonne, car tu ne divise que jusqu'a 11 alors que tu devrais diviser avec tout les nombre jusqu'a nombre a tester ou jusqu'a sa racine carré pour aller plus vite car sinon tu risque de dire que des nombre sont premier alors qu'ils ne le sont pas (cela dis j'ai passé qu'un rapide coup d'oeil sur ton source donc je me trompe peut etre) enfin si tu veux je peux te filer le source que j'ai fais sur les nombre 1°

Commentaire de ADPro22 le 06/04/2002 17:09:31

Il y a une erreur :
Quelques petits rappels sur la division euclidienne s'imposent.
Soit (a,b) un couple d'entiers. Alors il existe un unique couple d'entiers (q,r) avec 0&lt;=r&lt;b tel que l'on ait a = b*q+r
et a%b = r est le reste de la division euclidienne de a par b.
Donc (a%b = 0) equivaut à (b est un diviseur de a)
Pour voir que a est premier, il faut donc montrer qu'aucun nombre premier inférieur ou égal à la racine carrée de a ne divise a.

Voila et Bonne chance

Commentaire de Bki le 08/04/2002 21:18:22

#include &lt;math.h&gt;
#include &lt;iostream.h&gt;

bool premier(int nb)
{
   bool res=true;
   int racine=sqrt(nb);
   for(int i=2; i&lt;racine; i++)
   {
      if(nb%i==0)
         res=false;
   }
   return res;
}

int main()
{
   {
      int nombre=9;
      bool nbpremier=premier(nombre);

      if(nbpremier)
         cout &lt;&lt; nombre &lt;&lt; " est premier" &lt;&lt; endl;
      else
         cout &lt;&lt; nombre &lt;&lt; " n'est pas premier" &lt;&lt; endl;
   }
   return EXIT_SUCCESS;
}

J'ai pas vérifié, y a ptet une faute.

Commentaire de ADPro22 le 09/04/2002 15:04:08

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

Commentaire de The Waxy Man le 01/05/2002 19:42:11

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 !! @+

Commentaire de The Waxy Man le 01/05/2002 19:49:17

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 &lt; que 10, il est ajouté à drapeau car il est divisible par lui meme
Mais si le nb est &gt; 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 &gt; que 10.*/

/* drapeau peut aussi s'appeler compteur */



#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;ctype.h&gt;
main()
{

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


while (reponse=='O')
{

                  
  


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

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

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

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

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


printf("

Voulez vous recommencer ? &lt;O/N&gt;
&gt;");
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 ;-)

Commentaire de TRAX44 le 26/02/2006 15:24:23

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Séries mathématiques [ par Padou ] Quelqu'un peut-il m'aider et me dire comment on code les séries mathématiques du sinx, cosx, exponentielle et logarithmique. sinx= x-(x^3/3!)+(x^5/5!) je cherche quelqu'un fort en maths et qui est en 1ere ES !! [ par GEO ] je cherche quelqu'un qui aurais le livre orange declic maths de 1 ES merci d'avance Librairies mathématiques VS matlab [ par devilinside ] Devant coder une interface graphique en visual C++ pour un logiciel de calcul, je suis fort dépourvu.Le code original du coeur de calcul tourne sous m Une sphere englobant tous les points [ par MrPatachou ] BonjourJe dois realiser un programme qui analyse des formes du dos ; mais je reste bloque a une etape a cause de mes lacunes en maths, je m explique : maths et C++ [ par TRAX44 ] Salut,je suis débutant et voudrai savoir si ya un truc pour utiliser les grands nombres non bornés en C (comme BigInteger en java)?MerciTRAX Compilation [ par mohamado2001 ] je voudrais trouver qqe qui va m'aider en compilation a resoudre la grammaire des suites numériques et les fonctions mathématiques et les expressions calcul de limite en maths [ par spirit22 ] voilaj'aimerais savoir si l'un de vous s'etait deja penche sur le probleme de calcul de limite mathematiques ..je suis en ce moment sur un projet d'in Maths 3d [ par Cornell711 ] Salut, Je ne suis pas tr&#232;s bon en graphisme en g&#233;n&#233;ral mais j'ai besoin de quelque chose de pr&#233;cis. Je crois comprendre que du poi Compilation commandée [ par Galmiza ] Salut,Je fais actuellement un programme qui doit &#233;x&#233;cuter rapidement des fonctions math&#233;matiques non connues &#224; l'avance. Un peu co


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales