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

  FORUM HardWare.fr
  Programmation
  C

  Problème programme C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème programme C

n°2176658
knabis
Posté le 20-02-2013 à 17:27:48  profilanswer
 

Bonjour à tous,
 
Je dois réaliser un petit programme en C. On commence par entrer un entier N. Le but est, en utilisant une boucle for, de dire si chaque entier compris entre 1 et N est premier ou non.
 
Mon problème est qu'une fois que la boucle atteint un entier non premier, tous les nombres suivants sont considérés comme non premier ..
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {int i=2,S=1,N,q,j;
  4. scanf("%i",&N);
  5. for(j=2;j<=N;j++) {
  6. for(i=2;i<j&&S==1;i=i+1) {
  7. q=j/i;
  8. if (q*i==j){S=0;} ;
  9. }
  10. printf("La solution pour %i est S=%i\n",j,S);
  11. }
  12. }


 
Le problème vient-il de la condition d'arrêt à la ligne 6 ?
 

mood
Publicité
Posté le 20-02-2013 à 17:27:48  profilanswer
 

n°2176693
yann39
⛅⏰♫♪☹☕
Posté le 20-02-2013 à 21:01:38  profilanswer
 

Pour savoir si un nombre est premier, le plus simple est d'utiliser le modulo, ton code deviendra bien plus simple :
 

Code :
  1. for(j=2; j<=N; j++) {
  2.   if (N % j == 0) {
  3.     printf("%j est un nombre premier\n",j);
  4.   }
  5. }


Message édité par yann39 le 20-02-2013 à 21:02:12

---------------
Topic achats/ventes | Feed-back | Worklog
n°2176702
Farian
Posté le 20-02-2013 à 22:12:09  profilanswer
 

Bonsoir, il faudrait surtout penser à réinitialiser S à 1 entre les 2 boucles for, sinon, en effet, une fois un nombre non premier trouvé, S est mis à 0 pour de bon et tous les autres ressortiront comme non premiers.

n°2177542
Sve@r
Posté le 26-02-2013 à 13:52:52  profilanswer
 

Bonjour
Inutile de boucler jusqu'à N. Imaginons un nombre N qui aurait deux diviseurs x et y (avec x < y). Sitôt la boucle arrivée à x, y est alors trouvé par contrecoups et la boucle ne l'atteindra jamais.
 
Faut boucler jusqu'à V(N) ou alors tant que N / j > j...


Message édité par Sve@r le 26-02-2013 à 13:53:28

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

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

  Problème programme C

 

Sujets relatifs
Fancybox > problème flècheChoix d'ecole de formation C# .NET
Transcription listes R en structures C[java] Ligne qui bloque tout mon programme
Problème avec JOptionPane[Android] Probleme video (pas d'image)
problème de conditionC++ - Boucle infini d'include
Problème du connexion à BD Mysql dans un programme CProblème d'exec() d'un programme C++ sous PHP
Plus de sujets relatifs à : Problème programme C


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