120. EXTRACTION DE RACINES
Dans une conversation que j'ai eue avec le Professeur Simon Greathead, éminent mathématicien, vivant maintenant en retraite à Colney Hatch (*), j'ai eu l'occasion de parler de l'extraction de racines cubiques.
"Ah," dit le professeur, "il est étonnant de voir quelle ignorance prévaut sur cette matière élémentaire ! Le monde semble avoir fait peu de progrès dans le processus d'extraction des racines depuis la méthode primitive d'employer des pelles, des fourches et des truelles pour cela. Par exemple, personne d'autre que moi n'a jamais découvert le simple fait que, pour extraire la racine cubique d'un nombre, il suffit d'additionner les chiffres. Ainsi, en ignorant le cas évident du nombre 1, si vous voulez la racine cubique de 512, additionnez les chiffres : 8, et vous y êtes !"
J'ai suggéré qu'il s'agissait d'un cas particulier.
"Pas du tout," répondit-il. "Prenez un autre nombre au hasard - 4913 - et les chiffres s'ajoutent à 17, dont le cube est 4913."
Je n'ai pas osé discuter ce point avec le savant, mais je demanderai simplement au lecteur de découvrir tous les autres nombres dont la racine cubique est égale à la somme de leurs chiffres. Ils sont si peu nombreux qu'ils se comptent sur les doigts d'une main.
(*) Un grand hôpital psychiatrique à Middleses, près de Londres.
- Martin GARTNER, editor of the mathematical games department, Scientific American.
Le but de ce MPO est de proposer un code aussi court et efficace que possible pour aider le lecteur à déterminer tous les nombres dont la racine cubique est égale à la somme de leurs chiffres.
EDIT 06-06-2023: désolé, je n'avais pas vu l'oubli de l'article déterminé.
En conséquence de cette ambiguïté due à ma maladresse, on peut faire comme on le souhaite. soit déterminer tous les nombres, soit déterminer tout nombre qui pourrai l'être.
Certains membres du forum ont, à leur insu, déjà répondu partiellement à ce MPO en proposant par ailleurs les codes suivants. Il s'agit dans l'ordre de mise en ligne de :
Over_Score qui a proposé le code en C suivant:
LISZT qui a publier (c'est une première) un code en R:Over_score a écrit : ↑04 juin 2023 20:25Code : Tout sélectionner
#include <stdio.h> #include <stdlib.h> #include <math.h> double integer(double x) { if(x >= 0) return floor(x); return -floor(-x); } int main(void) { double k, n, s; for(k=0; k<=54; k+=1.0) { n = k*k*k; s = k / 10.0; l20: n = integer(n) / 10.0; if(n != 0.0) { s = s - (n - integer(n)); if(s + 0.0001 >= 0.0) goto l20; } if(fabs(s) <= 0.0001) printf("%.0f\n", k*k*k); } return 0; }
Zebulon qui propose un code en Python qu'il aimerai voir être optimisé:
Zebulon a écrit : ↑05 juin 2023 15:29Code : Tout sélectionner
from math import * def scube(): for k in range(54): n=k**3 s=0 for i in str(n): s=s+int(i) if s==k: print(n) print(s)
J'oubliai le code de votre insatiable serviteur:
KEZAKO n°2
10 WAIT 0: FOR K=0 TO 54:N=K^3,S=K/10
20 N= INT N/10: IF N LET S=S-N+ INT N: IF S>=0 GOTO 20
40 IF S=0 PRINT K^3;
50 NEXT K: BEEP 1: END
A vos machines, l'affrontement a déjà commencé...
... et il y a encore tant d'autre language et machine à explorer.