IPB

Bienvenue invité ( Connexion | Inscription )

> Nombre d'Armstrong En Python et/ou C(++)
Options
alfranz
posté 30 Mar 2023, 09:33
Message #1


Nouveau Membre


Groupe : Membres
Messages : 4
Inscrit : 27 Mar 2023
Membre no 217 569



J'ai besoin d'imprimer tous les nombres armstrong entre 1 et 10000. Mon problème est que lorsque j'exécute mon programme et que j'atteins 150, il ne fait rien.

Code
(1^3) + ((5^3)-1) + (0^3)


au lieu de

Code
(1^3) + (5^3) + (0^3).


Est-ce un bug du compilateur ? Est-il nécessaire de réinstaller mon compilateur ? J'utilise actuellement des blocs de code.

Code
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    for(int i = 0;i <= 10000;++i)
    {
        int r = i;
        int dig = 0;
        while(r != 0)
        {
            dig++;
            r /= 10;
        }
        int n = i, sum = 0;
        while(n != 0)
        {
            int d = n % 10;
            sum += pow(d, dig);
            n /= 10;
        }
        if(sum == i)
            cout << i << ' ';
    }
    cout << "\n\n\n";
    return 0;
}


En conséquence, il n'imprime pas 153 (un nombre d'Armstrong), car la somme est de 152. Je ne sais pas si d'autres nombres effectuent la même chose. Mais j'ai vérifié jusqu'à 200 en utilisant cette source et il n'y a aucun problème avec les autres chiffres sauf ceux de la zone 150-160.

Ce message a été modifié par Phil J. Fry - 31 Mar 2023, 12:31.
Raison de l'édition : Titre
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
baron
posté 31 Mar 2023, 00:36
Message #2


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 416
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Citation (Phil J. Fry @ 30 Mar 2023, 23:48) *
Leur solution a l'air bien compliquée.

Si j'ai bien compris la "source" de notre ami, il y a là différentes procédures pour arriver au même but limité (vérifier si tel nombre répond ou non aux critères d'un nombre d'Armstrong).
Tu parlais en général ou d'une en particulier ?
(Pour ma part, j'aime assez celle par les fonctions, que je comprends, à l'inverse de celle par récursion… huh.gif )

Ensuite, il faudrait encore utiliser la force brute et recommencer pour chaque nombre jusqu'à 10.000.

— Ce que veut de toute évidence faire le script d'alfranz, mais je suis trop analphabète en la matière pour le lire ou dire s'il y a une faille dans ce code.

Citation (Phil J. Fry @ 30 Mar 2023, 23:48) *
La mienne tient en 16 instructions en Python3.

thumb.gif
Je n'ai pas été plus loin que de parcourir l'article de Wikipedia… (et j'en ai déjà oublié bien des bouts !)
Je puis au moins dire que dans la version anglaise, il y a aussi des scripts Python (et C comme ci-dessus ! tongue.gif )


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 4th June 2024 - 15:16