Maison >développement back-end >tutoriel php >Comment une fonction PHP peut-elle déterminer efficacement si un nombre est premier ?
Une formule pour trouver des nombres premiers dans une boucle
Cette question cherche à identifier les nombres premiers à l'aide d'un mécanisme de boucle. Plus précisément, la question vise à créer une fonction PHP pour trouver efficacement des nombres premiers.
Pour comprendre le processus, introduisons le concept de nombres premiers. Les nombres premiers sont des nombres entiers supérieurs à 1 qui ne sont divisibles par aucun autre nombre entier sauf 1 et eux-mêmes.
Cette définition suggère un moyen simple de vérifier la primalité : divisez le nombre par tous les nombres entiers de 2 au carré. racine du nombre. Si l'une de ces divisions a un reste, le nombre est premier.
La fonction PHP fournie dans la réponse à la question adhère à ce concept :
<code class="php">function isPrime($num) { //1 is not prime. See: http://en.wikipedia.org/wiki/Prime_number#Primality_of_one if($num == 1) return false; //2 is prime (the only even number that is prime) if($num == 2) return true; /** * if the number is divisible by two, then it's not prime and it's no longer * needed to check other even numbers */ if($num % 2 == 0) { return false; } /** * Checks the odd numbers. If any of them is a factor, then it returns false. * The sqrt can be an aproximation, hence just for the sake of * security, one rounds it to the next highest integer value. */ $ceil = ceil(sqrt($num)); for($i = 3; $i <= $ceil; $i = $i + 2) { if($num % $i == 0) return false; } return true; }</code>
Cette fonction utilise un tableau pour stocker le facteurs du nombre et vérifie les restes des divisions. Si un reste est nul, cela indique la présence d'un facteur, rendant le nombre non premier. Cependant, si aucun facteur n'est trouvé, le nombre est considéré comme premier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!