Rechercher : dans
Par :

Programme sur les nombres premiers

Dernière réponse le 28 jan 2009 à 15:16:35 moi, le 21 jan 2005 à 18:15:18 
 Signaler ce message aux modérateurs

Salut tout le monde,
J'avais déjà écrit pour des renseignements sur les nombres premiers et certain m'avais aidés mais voilà j'ai toujours un problème. Je mets mon code en-dessous et si quelqu'un peut m'aider à corriger j'en serai ravi...

#include <stdio.h>
#include <stdlib.h>

int main()
{
int v[100]; /*vecteur contenant les nombres*/
int j; /*compteur des nombres du vecteur*/
int i; /*position des nombres dans le vecteur*/
int cpt=0; /*compteur des nombres premiers*/


for(i=0; i<100; i++) /*entrée des valeurs de 0 à 100 dans le
{ vecteur + affichage du vecteur*/
v[i]=i;
printf("%4d",v[i]);
}


printf("\n\n\n");


for(i=0; i<100; i++)
{

for(j=2; j<v[i]; j++)
{

if((v[i]%j)!=0) /*si un nombre "v[i]" est divisible par un
{ des nombres "j" qui le précède,*/
cpt++; /*alors il n'est pas premier*/
printf("%4d",v[i]); /*on affiche les nombres premiers*/
break;
}

}

}


printf("\n\nIl y a %d nombre(s) premier(s).",cpt); /*on affiche
le nombre de nombres premiers*/

printf("\n\n\n");
system("pause");
}

Je sais qu'il y a un problème dans ma boucle mais je ne sais pas comment le résoudre (c'est le problème du 1).
Voilà j'attends votre aide et merci d'avance.

Meilleures réponses pour « programme sur les nombres premiers » dans :
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Exercice assembleur x86 nombre premier VoirIntroduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur...
Désinstaller proprement Spybot Search and Destroy 1.6 VoirPour désinstaller Spybot Search&Destroy 1.6, suivre la procédure suivante: Ajout/Suppression de programmes Se débarrasser complètement de Spybot-S&D 1.6 Petit correctif Ajout/Suppression de programmes En premier lieu, désactiver le...
Télécharger Adobe Premiere Pro VoirAdobe Premiere est un programme de renom dans le montage et l'édition de vidéos. Il comprend plusieurs outils pratiques et des fonctionnalités complètes. Il permet entre autre d'éditer vidéo et audio avec une multitude d'options. Adobe Premiere...
Le chiffrement avec RSA Voirle système RSA Le premier algorithme de chiffrement à clé publique (chiffrement asymétrique) a été développé par R.Merckle et M.Hellman en 1977. Il fut vite rendu obsolète grâce aux travaux de Shamir, Zippel et Herlestman, de célèbres...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Structure d'un programme VoirA quoi ressemble un programme informatique? L'allure d'un programme dépend du type de langage utilisé pour faire le programme... Toutefois, à peu près tous les langages de programmation sont basés sur le même principe : Le programme est constitué...

1

blurk, le 21 jan 2005 à 19:46:07

Salut, j'ai essayé de modifier le moins possible ton listing, mais
j'ai quand même rajouté une variable.
le problème, c'est que quand un nombre est divisible, pas la peine d'insister. Par contre, quand on a fini la boucle et qu'il ne s'est pas montré divisible (par autre chose que 1 et lui même), cela ne fait qu'un seul nombre premier. Donc son affichage doit être en dehors de la boucle de vérification (qu'un nombre est premier)


#include <stdio.h>
#include <stdlib.h>

int main()
{
int v[100]; /*vecteur contenant les nombres*/
int j; /*compteur des nombres du vecteur*/
int i; /*position des nombres dans le vecteur*/
int cpt=0; /*compteur des nombres premiers*/
bool premier; /* témoin de nombre premier */


for(i=0; i<100; i++)
/*entrée des valeurs de 0 à 100 dans le
vecteur + affichage du vecteur*/
  {
  v[i]=i;
  printf("%4d",v[i]);
  }


printf("\n\n\n");


for(i=0; i<100; i++)
{
/* je sais que c'est bizzare mais il faut bien rentrer dans la boucle*/
premier=true;
 for(j=2; j<v[i] && premier== true; j++)/*tant que premier et que pas tout vu*/
 {
  if((v[i]%j)==0) /*si un nombre "v[i]" est divisible par un
   des nombres "j" qui le précède,*/
    {
     premier=false;
    /*seule la détection d'un nombre non premier fait sortir de la     boucle*/
    }

  }

/**/
if(premier==true)
  {
     cpt++; /*alors il n'est pas premier*/
     printf("%4d",v[i]); /*on affiche les nombres premiers*/
  }
}


printf("\n\nIl y a %d nombre(s) premier(s).",cpt); /*on affiche
le nombre de nombres premiers*/


printf("\n\n\n");
system("pause");
}



cordialement
¤

Répondre à blurk

2

moi, le 21 jan 2005 à 20:59:03

Merci pour le code je crois que j'ai enfin pigé le truc. Le type booléen c'est vraiment pas bête mais je n'y aurai jamais pensé tout seul.
A la prochaine, parce que je me connais, il va y en avoir d'autre!!!

Répondre à moi

3

PetitFurby, le 24 jan 2005 à 19:24:12
  • +1

Bonjour!

J'ai fait il y a assez longtemps un programme en rapid-q pour trouver les nombres premiers. J'ai maintenant la liste de tous les nombre premiers de 1 à 50000 (mais je peux aller + loin 8-D ). Si ca peut interresser quelqu'un...

Mon site sur la programmation en Rapid-Q : http://www.Rapid-Q.tk

Répondre à PetitFurby

7

 johan, le 28 jan 2009 à 15:16:35
  • +1

Je souhaiterai avoir ta page et savoir comment reconnaitre rapidement quand c'est un nombre premier merci pour ton aide

Répondre à johan

4

moi, le 24 jan 2005 à 20:42:59

Je suis intéressé par ton programme alors si tu peux me dire ou le trouver j'en serais content. Le language rapid-q m'est inconnu mais si tu peux m'envoyer une page ou deux d'explications se serait bien aussi.

Merci d'avance, salut.

Répondre à moi

5

PetitFurby, le 24 jan 2005 à 21:22:44

Salut!

Pas de problème j'ai retrouvé le code source du programme .

N'étant pas un pro de la prog mes codes sources sont encore compréhensibles.. lol Sinon demande moi de l'aide par mail.

Voici le lien du code source : http://thomas.nico.free.fr/file/nbprem.bas

Pour le compiler, télécharges rapidq sur mon site : www.Rapid-Q.tk

[Ca a été programmé rapidement et c'est encore perfectible au niveau de la vitesse, m'enfin ca commence à ramer aux alentours de 20000 sur un P133 Mhz :p)]

Voici la liste des nb premiers de 1 à 50000 :
http://thomas.nico.free.fr/file/nbprem.txt

Si il y a un problème, tu peux me contacter facilement , plus d'infos sur mon site.

A+
Nico ;-)

Répondre à PetitFurby