Bonjour,
Je cherche un algorithme pour calculer à l'aide d'un langage de programmation la suite 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, ...
Merci d'avance
-----
Bonjour,
Je cherche un algorithme pour calculer à l'aide d'un langage de programmation la suite 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, ...
Merci d'avance
Bonjour,
Oùest la partie entière de
![]()
Je suis Charlie.
J'affirme péremptoirement que toute affirmation péremptoire est fausse
bonjour,
joli!
JR
l'électronique c'est pas du vaudou!
re
c'est une notation générale donc on remplace x par n et hop!
serait ce pour faire ou exploiter un appareil de mesure car la séquence 1,2,5 est assez typique de domaine ?
JR
l'électronique c'est pas du vaudou!
Je suis électronicien donc familier avec cette séquence (voltmètre, oscillo, ...).
Je trouve quelle convient bien pour découper une étude statistique, dans le cas présent combien de messages les membres d'un forum ont-ils posté : 0, 1, 2 à 4, 5 à 9, 10 à 19, 20 à 49, ...
Je n'ai cependant toujours pas compris, en remplaçant x par n
Oùest la partie entière de
est-ce qu'en faisant n = 1, 2, 3, ... on obtient 1, 2, 5, ... ?
re
yes it works! c'est du Médiat !
mais ll faut partir de zéro.
JR
Dernière modification par jiherve ; 13/04/2021 à 10h40.
l'électronique c'est pas du vaudou!
En effet, ça fonctionne, en Excel
((MOD(n;3))^2+1)*10^(ENT(n/3))
Bonjour,
La solution proposée est en effet astucieuse, mais elle résulte d'un réflexe mathématique (ce qui n'a évidemment rien d'anormal !).
Comme le rapport (f) entre deux termes consécutifs alterne entre 2 et 5, on peut envisager un algorithme plus simple en employant la fonction involutive F(x) = 7 - x :
[CODE=Pascal]
k:= 0; Liste[0]:= 1; f:= 5;
REPEAT
Inc(k); f:= 7 - f; Liste;[k]:= f * Liste[k - 1]
UNTIL (k=Max); [/CODE]
Instructions à vérifier (je ne les ai pas compilées).
Dernière modification par Opabinia ; 13/04/2021 à 13h48.
Quel langage est-ce ?
Si je comprends bien tu obtiens seulement 2, 5, 2, 5, ... et non 1, 2, 5, 10, 20, 50, ...
Exact. J'aurais dû lire plus attentivement la suite donnée plus loin.
Il faut faire intervenir une seconde suite de période égale à 3:
Programme source Pascal complet, où les instructions d'affichage sont assez lourdes:
... mais permettent de s'assurer de la conformité des résultats:Code:PROGRAM Suite; USES Crt; CONST Kmax = 50; Total = 6.5; TYPE Tab_R = ARRAY[0..Kmax] OF Extended; VAR k: Byte; f, g, h, s: Extended; Liste: Tab_R; BEGIN TextBackGround(0); ClrScr; k:= 0; Liste[0]:= 1; f:= 2.0; g:= 2.5; h:= 2.0; REPEAT Inc(k); Liste[k]:= f * Liste[k - 1]; f:= g; g:= h; s:= f + g; h:= Total - s; GotoXY(5, k + 2); TextColor(12); Write(k:3); TextColor(10); Write(h:10:1); TextColor(15); Write(Liste[k]:20:0) UNTIL k= Kmax; ReadLn END.
Pourquoi faire simple et compact quand on peut faire compliqué et long ?
Je suis Charlie.
J'affirme péremptoirement que toute affirmation péremptoire est fausse
Bien vu, c'est une question d'économie
Hyperinflation sequence for banknotes.
https://oeis.org/A051109
Sans questions il n'y a que des problèmes sans réponses.
((MOD(n;3))^2+1)*10^(ENT(n/3))![]()
En Python, en utilisant explicitement la liste L = [1,2,5] comme paramètre, qu'on pourrait remplacer par [1,2,4,8] par exemple pour obtenir 1 2 4 8 10 20 40 80 ...
Code:L = [1,2,5] for n in range(20): print list(map(lambda x: x*10**(n/len(L)), L))[n%len(L)]
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.
L'inconvénient de cette approche par rapport à celle postée plus haut, c'est qu'on génère toute la liste d'un coup et qu'on se fixe une taille limite. Dans le cas présent, ce n'est pas grave parce qu'on sait qu'on ne va pas en avoir des millions.
Bonjour pm42. je n'ai pas compris ta remarque. Le code proposé génère seulement une liste de même taille que le paramètre L, sauf que chacun des éléments est multiplié par la bonne puissance de 10. La boucle in range(20) c'est juste pour tester la fonction avec 20 valeurs de n...
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.