Un nombre premier est un nombre qui n'est divisible que par 1 et lui même. Il en existe une infinité.
Ces nombres assurent actuellement la sécurité de vos cartes bancaires par exemple. La détermination du plus grand nombre premier fait parti des grandes recherches mathématiques de nos temps.
Ce script permet d'afficher la liste des N premiers nombres premiers. N est modifiable à souhait.
Bien sûr si vous mettez N très grand, vous pouvez attendre que les dents poussent dans la bouche d'une poule :-) pcq ça va vous mettre une plombe surtout que nos ordinateurs ne sont pas très très puissants niveau calcul.
Sachez tout de même que la détemination des nombres premiers de plus en plus grand s'effectue avec des machines qui sont dédiés uniquement à cette tâche.
Source / Exemple :
<?
set_time_limit(0);
$nombre=100; //Variable permettant d'afficher la liste des nombres premiers inférieurs à $nombre
echo "2<br>";
for($i=2;$i<$nombre;$i++)
{
for($j=2;$j<$i;$j++)
{
if(($i%$j)==0) break;
if($j==($i-1)) echo "$i<br>";
}
}
?>
Conclusion :
Le script n'est pas très long et peut-être compréhensible avec un peu d'attention ;) voilou voila ;)
6 juil. 2012 à 16:05
14 févr. 2004 à 23:00
ENCORE BIEN JOUé
14 févr. 2004 à 23:00
ENCORE BIEN JOUé
14 févr. 2004 à 14:00
<?
$n = 100;
$Naturels = array();
for($i = 0; $i <= $n; $i++) $Naturels[] = 1;
$Naturels[0] = 0;
$Naturels[1] = 0;
for($i = 2; $i <= $n; $i++)
if($Naturels[$i] == 1)
for($j = $i*2; $j <= $n; $j += $i)
$Naturels[$j] = 0;
$Premiers = array();
for($i = 2; $i <= $n; $i++)
if($Naturels[$i]) $Premiers[] = $i;
echo "";
print_r($Premiers);
echo "
";
?>
bonne journée ;-)
14 févr. 2004 à 13:48
pour le crible, le principe est simple:
$Naturels = array(); //tableau des naturels jusque $n (0 compris mais on s'en fiche)
for($i = 0; $i <= $n; $i++) $Naturels[] = true;
//la ligne ci-dessus met ts les naturels à true par défaut, donc par défaut ils sont premiers
$Naturels[1] = false; //pas 1, et l'indice 0 est pas utilisé
//mtnt commence l' "astuce", càd qu'on passe ts les Naturels en revue, et chaque fois qu'on rencontre un nombre qui est mis à true (donc qui est premier), on met ts ses multiples à false
for($i = 2; $i <= $n; $i++)
{
if($Naturels[$i] == false) continue; //on passe s'il est composé (= pas premier)
//si on arrive ici, c'est que c'est un nombre premier, donc on passe tous le tableau à la recherche des multiples, c'est ici que j'avais mis mes modulo, mais pr atteindre les multiples ils suffit d'avancer de $i en $i !
for($j = $i; $j <= $n; $j += $i)
$Naturels[$j] = false;
}
//on a donc mtnt un tableau assez grand qui contient true ou false pr ts les naturels jusque n, donc on crée un nouveau tableau dans lequel on ne met que les nombres premiers (les 'true')
$Premiers = array();
for($i = 2; $i <= $n; $i++)
if($Naturels[$i]) $Premiers[] = $i;
et là il s'agit de traiter ce tableau (afficher, sauver ...) et aussi si le script est encore long d'effacer le tableau Naturels, désormais inutile (il faut utiliser unset ou un truc du genre, je sais plus, unlink peut etre)
j'ai tappé ça en live donc je promets pas que le code fonctionne, mais tu as l'idée ;-)
amicalement,
Kirua
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.