Maison >développement back-end >C++ >Comment puis-je déterminer si un entier est premier en C ?

Comment puis-je déterminer si un entier est premier en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-31 09:07:09395parcourir

How Can I Determine if an Integer is Prime in C?

Détermination de la primalité en C

Votre demande visant à déterminer si un entier donné est premier en C soulève un défi de programmation intrigant. Décomposons les étapes pour y parvenir :

  1. Initialiser une boucle :Parcourir les nombres allant de 2 jusqu'à un de moins que l'entier donné.
  2. Vérifiez la divisibilité : Pour chaque nombre de la boucle, calculez le reste en divisant l'entier par ce nombre. Si le reste est zéro et que le nombre n'est pas l'entier lui-même, il n'est pas premier.
  3. Répétez l'étape 2 : Continuez à parcourir les nombres jusqu'à ce que vous atteigniez la racine carrée de l'entier.
  4. Renvoyer le résultat : Si aucun nombre dans la boucle n'a donné lieu à des diviseurs, l'entier est premier. Sinon, ce n'est pas premier.

En C#, votre code implémente cet algorithme comme suit :

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

Adaptation à C:

Pour traduire ce code en C, nous devons apporter quelques modifications mineures :

  1. C n'a pas de booléen type, nous utilisons donc un entier à la place, renvoyant 1 pour premier et 0 pour non premier.
  2. C99 a introduit l'en-tête stdbool.h, qui définit bool, mais si votre environnement ne prend pas en charge C99, vous pouvez utiliser un entier comme mentionné ci-dessus.

Le code C modifié suivant effectue la même chose tâche :

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

Ce code vérifie la divisibilité jusqu'à la racine carrée de l'entier pour optimiser les performances et gère les cas non premiers tels que zéro et un.

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