Maison > développement back-end > C++ > Comment déterminer efficacement si un nombre est premier en C ?

Comment déterminer efficacement si un nombre est premier en C ?

Linda Hamilton
Libérer: 2024-12-28 15:46:16
original
207 Les gens l'ont consulté

How to Efficiently Determine if a Number is Prime in C?

Comment déterminer les nombres premiers en C

La question porte sur la détermination si un entier donné est premier en C. La solution C# originale fournie était :

static bool IsPrime(int number)
{
    for (int i = 2; i < number; i++)
    {
        if (number % i == 0 && i != number)
            return false;
    }
    return true;
}
Copier après la connexion

Pour comprendre comment implémenter cela en C, décomposons le algorithme :

  1. Vérifiez si le nombre est négatif, zéro ou un. Ce ne sont pas des nombres premiers.
  2. Itérer de 2 à la racine carrée du nombre.
  3. Pour chaque itération, vérifiez si le nombre est divisible par la valeur actuelle.
  4. Si divisible, le nombre n'est pas premier.
  5. Si la boucle se termine sans trouver de diviseur, le nombre est prime.

En traduisant cet algorithme en C, nous obtenons :

int IsPrime(unsigned int number) {
    if (number <= 1) return 0; // zero and one are not prime
    unsigned int i;
    for (i=2; i*i<=number; i++) {
        if (number % i == 0) return 0;
    }
    return 1;
}
Copier après la connexion

Les différences par rapport à la solution C# originale incluent :

  • bool n'est pas un Type de données C, nous utilisons donc int et renvoyons 0/1 à la place.
  • stdbool.h n'est pas supposé être disponible, nous déclarons donc i manuellement.
  • La boucle itère jusqu'à la racine carrée du nombre pour plus d'efficacité.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal