Nombre_premier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 108 fois - Téléchargée 24 fois

Contenu du snippet

Un petit programme qui liste des nombres premiers jusqu'a $limit limite

Source / Exemple :


<?php
//nombre_premier.php

$nombres=array(2,3);
$nb=4;
$limit=11150;
while($nb<=$limit)
{
	$nbpremier=true;
	foreach($nombres as $val)
	{
		if($val!=1)
		{
			if(gettype($nb/$val) == "integer")
			{
				$nbpremier=false;
			}
		}
	}
	if($nbpremier==true)
	{
		$nombres[]=$nb;
	}
	$nbpremier=true;
	$nb++;
}
echo "Nombres premiers jusqu'a $limit : ";
foreach ($nombres as $nb)
{
	echo "<br />\n$nb";
}
?>

Conclusion :


Jusqu'ici, il liste jusqu'à 11150. (demande quelques secondes pour exectuter le script).
En effet, pour voir si un nombre est premier, il faut le diviser par les nombres premiers qu'il y avait avant.
Donc au 1 000 000eme nombre premier, il faut qu'il fasse 999 999 calculs !
Cela demande donc un peut de temps.

Pour vous montrer un exemple plus complexe avec mot de charchement, et la limite dans un formulaire, allez voir sur http://yannvag.free.fr/WebProject/nombre_premier/nombre_premier.php

A voir également

Ajouter un commentaire Commentaires
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
guill76, le php n'est pas limité à la programmation web, ce code n'a pas été corrigé, donc selon moi, ça ne vaut pas 4.5 de moyenne, mais beaucoup moins, car autant d'erreurs dans un programme aussi court, c'est inaccèptable!
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
4
Remarque sans intérêt : c'est vraiment pas la panacée Xeonarno, ce cours.. même si ca change un peu des trucs stupides qu'on fait le reste de l'année en term' S

Une autre optimisation intéressante, plutot que d'aller de 2 en 2, pour des grands nombres, ca peut être intéressant de faire des sauts réguliers avec les écarts des premiers nombres premiers. Quand on saute de 2 en 2 trois fois de suite, on est fatalement tombé sur un multiple de 3, ce qui est intrinsèquement idiot. Donc on peut comme ca s'éviter des dizaines de tests inutiles.. 'suffit de regarder ca de plus près ensuite :)
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016

En prog web je vois pas trop l'utilité de savoir si un nombre est premier ou non, mais quoi qu'il en soit le raisonnement semble juste: ça vaut pas 4.67 de moyenne, moi je met 7.
Ps J'ai mis 5 par erreur. Malalam, STP, tu peux corriger?
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
en terme de complexité , ils ont du O(n²) (il parcour tandis que moi O(n) s'il utilise la racine carré ils tomberont a O(n*sqrt(n)) qui est relativement elevé par rapport au mien .. fin au crible d'ératosthene ^^
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
if(gettype($nb/$val) == 'integer'){

c'est une mauvaise solution ça...

if($nb%$val===0){

ça c'est mieux et moins lent
Afficher les 15 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.

Du même auteur (yannvag)