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)
hubeert
posté 15 Jul 2023, 11:22
Message #2


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 967
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



coucou;

il n'y a pas de mal.

Oui je suis allé voir sur le lien qu'a donné Baron et je vais aller voir ton lien.

Le problème pour moi, c'est de comprendre la logique ( pas la logique, mais l'utilité pratique avec des exemples), deja savoir qu'on lit de droite a gauche sans priorité, je ne lavais pas vu rolleyes.gif .

Je vais regarder toutes tes indications et essayer de comprendre !!! c'est pas gagné lol.

Bon WK


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
Jaypee
posté 15 Jul 2023, 21:43
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Citation (hubeert @ 15 Jul 2023, 12:22) *
...
Le problème pour moi, c'est de comprendre la logique ( pas la logique, mais l'utilité pratique avec des exemples), deja savoir qu'on lit de droite a gauche sans priorité, je ne lavais pas vu rolleyes.gif .

J'ai créé un topic sur APL dans ce forum, y'a des exemples très divers pour montrer qu'APL pour résoudre les problèmes c'est un chouette couteau suisse, avec plein de lames, et même certaines dont on ne connait pas toujours l'utilité.
Ici la logique de très haut niveau est qu'on génère un vecteur booléen pour filtrer la liste des entiers de 1 à la limite qu'on donne. C'est une technique très courante en APL.
Pour construire le vecteur booléen on utilise un prédicat qui détermine si un entier est un nombre d'Armstrong ou pas, et on le mappe, ou on le distribue sur la suite des entiers de 1 à la limite qu'on donne.

Utiliser explicitement la distribution n'est pas très dans l'esprit APL, puisqu'il travaille naturellement avec des vecteurs.
@+JP
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 : 1st August 2025 - 16:59