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
Linda Hamiltonoriginal
2024-12-28 15:46:16228parcourir

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;
}

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;
}

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!

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