Maison  >  Article  >  développement back-end  >  Comment une fonction PHP peut-elle déterminer efficacement si un nombre est premier ?

Comment une fonction PHP peut-elle déterminer efficacement si un nombre est premier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 02:51:03662parcourir

How Can a PHP Function Efficiently Determine if a Number is Prime?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn