[c]: recherche de nombres premiers avec le crible d'ératosthène

Soyez le premier à donner votre avis sur cette source.

Vue 9 523 fois - Téléchargée 242 fois

Description

algo bien bourrin qui permet de trouver des nombres premiers jusqua 99999;
on met les nombres de 1 à n dans un tableau, puis à chaque nombre non éliminé, on elimine dans tout le tableau les multiples de ce nombre et ainsi de suite..

Source / Exemple :


// prog du crible d'erathostène pour chercher des nb premiers..

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

int main() {
	
	int tableau[100000];
	int premier[10000];
	int cur1,cur2;
	int element;
	int ntemp,n;
	int a=0;
	for (cur1=0;cur1<10000;cur1++){
		
		premier[cur1]=0;
			
		tableau[cur1]=0;
	
	}
	
		
	cout<<"nombres premiers jusqu'a combien ? \n";
	cin>>ntemp;
	n=ntemp;

	for (cur1=1;cur1<n;cur1++){
	
			a++;		
			tableau[cur1]=a;
	}
	
	
	premier[0]=2;

	for (cur2=0;cur2<n;cur2+=2){
	
	tableau[cur2]=0;
	
	}
	
	premier[1]=3;

	for (cur2=0;cur2<n;cur2+=3){
	
	tableau[cur2]=0;
	
	}	
	int temp;
	cur1=4;
	cur2=2;

		while (cur1<n){
		
			while (tableau[cur1]!=0){
			

			premier[cur2]=tableau[cur1];

			cur2++;
			temp=tableau[cur1];
			for (int sup=0;sup<=n;sup+=temp){
			
			tableau[sup]=0;

			}			
			}

	cur1++;
		
		
		}
	
char sertarien;
cout<<"\naffichage des nb premiers jusque n : \n";
for (element=0;element<cur2;element++){
cout<<premier[element]<<"  ";

if (element%200==0 && element!=0){
cout<<endl;
	printf("appuyer sur une touche pour continuer\n");
sertarien=getch();

}
}
cout<<endl;
sertarien=getch();

	
	return 0;}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Si tu veux que tes codes soient supprimés tu peux le dire et ce sera fait
Messages postés
269
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
9 juin 2003

Oui, effectivement, j'ai programmé toutes les sources que j'ai postées sur ce site lorsque j'étais encore un débutant en programmation... Je devrais en fait toutes les supprimer...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour tous les programmeurs, ne prenez pas exemple sur l'amis kjus, dont les sources contiennent des nombres magiques (100000, 10000, 200) dont on se sait pas trop d'ou elles sortent (surtout pour le 200)
N'incluez pas iostream.h car ca n'existe plus
Ne déclarez pas sur la pile des tableaux de 100000 entiers
Messages postés
77
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
12 août 2010

Tu devrais n'utiliser qu'un bit par nombre au lieu d'un octet, et ne stocker que les nombres pair, comme ça tu divise par 16 la mémoire.
Messages postés
527
Date d'inscription
vendredi 14 septembre 2001
Statut
Membre
Dernière intervention
6 octobre 2008
3
Pour tous les programmeurs, prenez exemple sur l'ami kjus, dont les sources sont aérés. Rajoutez des commentaires et ce sera parfait
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.