Calcul list de nombres premiers

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 394 fois - Téléchargée 16 fois

Contenu du snippet

Voila, j'etait dans un petit jeux, et la question etait "Determinez si les nombres suivants sont des nombres premiers ?". ^^ Il y en avait 10, donc je me suis dit, ca ira plus vite de faire un petit prog.
Voila donc mon code, qui contient deux fonctions (une qui determine si le nombre est un nombre premier, la seconde qui calcul la list de nombres premiers jusque x).
Utile pour les debutants.

Source / Exemple :


def nb(nombre):
## Fonction qui determine si un nombre est premier ou non.
	nb=True;
	i=2;
	while(i<(nombre-1) and i<(nombre/2)):
		if(nombre%i==0):
			nb=False;
		i=i+1;
	return nb;

def list(x):
## Fonction qui list les nombres premiers jusque X.
	i=1;
	while(i<x):
		if(nb(i)):
			print i;
		i=i+1;

##Corps du programme.
print "### Calcul de Nombres Premiers ###";
x=input("Jusque la valeur : ");
list(x);

A voir également

Ajouter un commentaire

Commentaires

cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Ce code n'est vraiment pas formidable, aucune optimisation, tu teste tous les nombres, les pairs compris et tu t'arrêtes bien trop tard. en effet, si un nombre n'est pas premier alors il admet un diviseur plus petit que sa racine carrée.

En faisant une optimisation vraiment minime, on arrive déjà à diviser par plus de 4 le nombre de test réalisés !!!
PlugnPlay666
Messages postés
30
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
17 septembre 2010
-
Julien n'a pas tout à fait tort . . . Même si c'est un script écrit à la va vite, tu aurais pu l'optimiser un minimum avant de le poster ici.

Juste un petit truc que j'ai remarqué 8 et 17, tu écris :

i=i+1

tu pourrais le remplacer par i+=1
M'enfin ça c'est juste plus beau à regarder, ça change pas grand chose . . .
aera group
Messages postés
390
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
9 -
"Une issue de secours à 9 000 mètres d'altitude… L'illusion de la sécurité." - Tyler

Bon, je pense que Julien39 à bien résumé la situation, j'ai beaucoup de mal à concevoir que l'on puisse déposé sur ce site un si petit code et surtout aussi mal optimisé.
De plus, il est souhaitable de ne pas mettre de ";" à la fin des lignes en Python, c'est assez contradictoire avec la volonté d'utiliser un langage de programmation aussi intuitif que Python ...

Voila je pense que 1 est une note largement suffisante. Tache de corriger ton code, et de déposé des programme un peu plus complexe.
PlugnPlay666
Messages postés
30
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
17 septembre 2010
-
Oh ! En lisant le commentaire d'Aera, j'ai vu un truc affreux !!
Une docstring ne se fait pas avec des dièses !! Sinon quand on fait help(fonction) rien ne s'affiche et ta pseudo-docstring ne sert à rien . . .

Pour écrire une docstring tu la met entre trois guillemets.

def nb(nombre):
"""Fonction qui détermine si un nombre est premier ou non."""

def list(x):
"""Fonction qui liste les nombres premiers jusqu'à X."""
sithoueb
Messages postés
3
Date d'inscription
jeudi 1 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2010
-
J'ai fait un programme (sur ma calculette et j'ai la flemme de le mettre sur PC) pour calculer les nombre premiers.
Et plutot que de vérifier avec TOUT les nombres, je vérifie si il est divisible avec les précédents, inférieur à sa moitié (Un nombre n'est pas divisible par un autre nombre supérieur à sa moitiée) !

Sérieux, ce code est assez nul (sans vouloir te vexer) ...

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.