Maison > développement back-end > tutoriel php > Comment puis-je trouver efficacement des nombres premiers à l'aide d'une boucle et d'une formule personnalisée ?

Comment puis-je trouver efficacement des nombres premiers à l'aide d'une boucle et d'une formule personnalisée ?

DDD
Libérer: 2024-10-30 09:13:27
original
881 Les gens l'ont consulté

How can I efficiently find prime numbers using a loop and a custom formula?

Incorporer la formule des nombres premiers dans une boucle

Dans la quête de trouver efficacement des nombres premiers à l'aide de boucles, vous pouvez rencontrer des situations où votre existant l’approche échoue. Explorons un cas d'utilisation spécifique et fournissons une solution mise à jour à l'aide d'une formule personnalisée.

Tentative originale et ses lacunes

Le code que vous avez initialement partagé tentait d'identifier les nombres premiers en utilisant une approche basée sur la boucle. Cependant, il était confronté à des limites pour identifier correctement les nombres premiers, notamment en raison de sa méthode de division des nombres.

Une formule et une mise en œuvre optimisées

Pour résoudre ce problème, envisagez de mettre en œuvre le Fonction isPrime() mentionnée dans la réponse fournie :

<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;
}
Copier après la connexion

Incorporation de la formule dans une boucle

Vous pouvez désormais exploiter cette fonction dans une boucle pour trouver efficacement Nombres premiers :

<code class="php">$limit = 100; // Set a limit to the number range you want to check

for ($i = 2; $i <= $limit; $i++) {
    if (isPrime($i)) {
        echo $i . " is a prime number. <br>";
    }
}</code>
Copier après la connexion

Avec cette approche mise à jour, vous pouvez désormais identifier avec précision les nombres premiers jusqu'à la limite spécifiée.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal