[C] Crible d'Eratosthène
2 participants
Page 1 sur 1
[C] Crible d'Eratosthène
- Code:
#include
int main()
{
int i,j,diviseur,N;
int tab[256];
tab[0]=2; //le premier nombre premier est 2
printf("Jusqu'où voulez-vous aller ? (tapez un nombre entre 2 et 256)\n");
scanf("%i",&N);
for (i=1;i
{
tab[i]=i+2;
}
for (i=1;i
{
if(tab[i-1]!=-1)
{
diviseur=tab[i-1];
for(j=i;j
{
if(tab[j]%diviseur==0)
{
tab[j]=-1;
}
}
printf("%i ", tab[i-1]); //affiche la liste des nombres premiers jusqu'à N
}
}
}
Bon, ce code marche mais j'aimerais le simplifier en utilisant des fonctions, surtout pour diminuer le nombre d'imbrications de boucles dans le main. Je n'y arrive pas et je demande alors de l'aide !
Julien- Administrateur
- Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005
Re: [C] Crible d'Eratosthène
Pour le remplissage initial du tableau avec tous les entiers jusqu'à N, j'ai créé une fonction à part d'où le nouveau code :
C'est surtout les imbrications que je veux améliorer mais déjà, même si le code fonctionne, est-ce-qu'il est propre ?
- Code:
#include
int* remplissage(int* tab, int N) //remplissage du tableau avec tous les entiers de 2 à N+1
{
int i;
for (i=1;i
{
tab[i]=i+2;
}
}
int main()
{
int i,j,diviseur,N;
int tab[256];
tab[0]=2; //le premier nombre premier est 2
printf("Jusqu'où voulez-vous aller ? (tapez un nombre entre 2 et 256)\n");
scanf("%i",&N);
int* a=remplissage(tab, N);
for (i=1;i
{
if(tab[i-1]!=-1)
{
diviseur=tab[i-1];
for(j=i;j
{
if(tab[j]%diviseur==0)
{
tab[j]=-1;
}
}
printf("%i ", tab[i-1]); //affiche la liste des nombres premiers jusqu'à N
}
}
}
C'est surtout les imbrications que je veux améliorer mais déjà, même si le code fonctionne, est-ce-qu'il est propre ?
Julien- Administrateur
- Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005
Re: [C] Crible d'Eratosthène
t'as un problème avec tes for là
tu les écrits pas complètement ^^
Il est sensé faire quoi ton programme ?
trouver des nombres premiers ?
tu les écrits pas complètement ^^
Il est sensé faire quoi ton programme ?
trouver des nombres premiers ?
Duche- Modérateur
- Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006
Re: [C] Crible d'Eratosthène
sinon autres commentaires en passant:
pourquoi
pourquoi
- Code:
int* remplissage(int* tab, int N)
- Code:
void remplissage(int* tab,int N)
Duche- Modérateur
- Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006
Re: [C] Crible d'Eratosthène
le_duche a écrit:t'as un problème avec tes for là
tu les écrits pas complètement ^^
Il est sensé faire quoi ton programme ?
trouver des nombres premiers ?
La balise code n'écrit pas tout j'ai l'impression... Sinon, mon programme affiche les N premiers nombres premiers. Et il marche bien maintenant que je l'ai arrangé !
Sinon t'as raison pour le void, vu que ça ne renvoie rien...
Julien- Administrateur
- Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Jeu 2 Juil 2015 - 15:16 par louaraychi
» Devoir maison sur équilibre et réaction chimique
Dim 1 Fév 2015 - 17:19 par sararose
» Ma présentation
Sam 25 Oct 2014 - 23:29 par Rith
» projet scientique sur la LUMIERE
Ven 26 Sep 2014 - 20:33 par benjamin-010
» La trajectoire de la Terre
Mar 5 Aoû 2014 - 22:19 par Alban
» Equilibrer une réaction redox
Dim 8 Juin 2014 - 21:18 par Courtney ♥
» les effets sur les lignes de transport de l’électricité
Ven 30 Mai 2014 - 17:14 par leila14
» lignes de transport de l'électricité
Ven 30 Mai 2014 - 17:07 par leila14
» Gravitation
Ven 16 Mai 2014 - 20:16 par fatimaa
» Maquette suspension de moto 2D
Jeu 17 Avr 2014 - 17:20 par Sti2d