Exercice PROGRAMMATION C : Le Nombre de Münchhausen

Alors Champion, savais-tu qu'en Allemagne, il y avait un baron pas comme les autres ? Le baron de Münchhausen est célèbre pour ses récits extravagants, notamment pour s'être élevé dans les airs avec son cheval en se tirant lui-même par sa propre queue de cochon ! Cette fantaisie mathématique donne son nom à un concept tout aussi fascinant en arithmétique : les nombres de Münchhausen, aussi appelés perfect digit-to-digit invariant (PDDI) en anglais.

Un nombre de Münchhausen est un nombre entier naturel qui, lorsqu'il est décomposé en ses chiffres, est égal à la somme de ces mêmes chiffres, chacun élevé à la puissance de lui-même. Pour ces calculs, nous acceptons que 00 = 0.

 

$$ n = d_k b^k + d_{k-1} b^{k-1} + \dots + d_1 b + d_0 = d_k d_k + d_{k-1} d_{k-1} + \dots + d_1 d_1 + d_0 d_0 $$

n=dkbk+dk−1bk−1+…+d1b+d0=dkdk+dk−1dk−1++d1d1+d0d0 .Un calcul élémentaire prouve que n est majoré par 2bb ; dans une base donnée, il n'existe donc qu'un nombre fini de perfect digit-to-digit invariants, dont on peut programmer le calcul. Zéro et un sont des perfect digit-to-digit invariants dans toutes les bases. En base dix, les deux seuls autres perfect digit-to-digit invariants sont 3 435 et 438 579 088 :

33+44+33+55=27+256+27+3125=3435 Par exemple, en base 10 :

  • Le nombre 3435 est un nombre de Münchhausen, car : 3^3 + 4^4 + 3^3 + 5^5 = 27 + 256 + 27 + 3125 = 3435

L'objectif est d'écrire un programme en C qui permet de vérifier si un nombre donné par l’utilisateur est un nombre de Münchhausen. Le programme doit utiliser uniquement des structures conditionnelles et/ou des boucles, mais une contrainte supplémentaire s’ajoute : vous devez utiliser une structure Ternaire (voir Td 01).

Correction Programmation C :


#include <stdio.h>
#include <math.h>

int main() {
    int nombre, original, chiffre, somme = 0;
    printf("Entrez un nombre entier : ");
    scanf("%d", &nombre);

    // Sauvegarde du nombre original
    original = nombre;

    // Calcul de la somme des chiffres élevés à leur propre puissance
    while (nombre > 0) {
        chiffre = nombre % 10; // Extraction du chiffre
        // Calcul de la puissance (0^0 est traité comme 0)
        somme += (chiffre == 0) ? 0 : pow(chiffre, chiffre);
        nombre /= 10; // Réduction du nombre
    }

    // Vérification du résultat
    if (somme == original) {
        printf("%d est un nombre de Münchhausen.\n", original);
    } else {
        printf("%d n'est pas un nombre de Münchhausen.\n", original);
    }

    return 0;
}

Si vous avez trouvé cet exercice corrige en Langage C de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

1 vote. Moyenne 5 sur 5.

Commentaires

  • Tadatedavid

    1 Tadatedavid Le 04/12/2024

    Please how can i.develope a code because I know the syntax but don't know how where and why to use it

Ajouter un commentaire

Anti-spam