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
Libérer: 2024-12-31 09:07:09
original
363 Les gens l'ont consulté

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

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

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!

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