• Initiateur de la discussion Initiateur de la discussion zippog
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

zippog

Guest
Je réalise une feuille de calcul sur la conjecture de Syracuse (on part d'un entier et on le divise par 2 s'il est pair ou on le multiplie par 3 et on ajoute 1 s'il est impair).
J'aurais besoin de déterminer au bout de combien de termes on retombe sur le 1 pour la première fois, sans tenir compte du 1er terme.

Par exemple:
1-4-2-1-4-2-1.....--->3
6-3-10-5-16-8-4-2-1-4-2-1...--->8
 
Re : Syracuse

Merci pour cette réponse (je ne connaissais pas equiv).

Deux petites choses:
- mes données sont dans la colonne A
- equiv semble donner le numéro de ligne (ou de colonne) alors que je souhaite avoir le rang du dernier terme avant 1 (mes données ne commencent pas sur la première ligne de la colonne A)
 
Re : Syracuse

re: Jiheme 🙂

Voici une autre formule (Affiche la valeur avant le 1)

=SI(A1=1;INDEX(A:A;EQUIV(1;A2:A1000;0);1);INDEX(A:A;EQUIV(1;A:A;0)-1;1))

Mais je ne comprends pas, pour arriver à 1, il faut / 2 or seul 2 / 2 arrive à 1, donc la valeur avant le 1 est toujours 2

affiche le n° de ligne juste avant le 1er un

=SI(A1=1;EQUIV(1;A2:A1000;0);EQUIV(1;A:A;0)-1)
 
Dernière édition:
Re : Syracuse

Bonjour le fil 🙂
J'arrive un peu en retard 😱, mais je propose quand même ma solution :
Code:
Function Syracuse(Nombre)
Application.Volatile
Dim Résultat As Integer, Compteur As Integer
If Nombre = 1 Then
    Compteur = 3
End If
Résultat = Nombre
Do While Résultat <> 1
If Résultat / 2 = Int(Résultat / 2) Then
    Résultat = Résultat / 2
Else
    Résultat = Résultat * 3 + 1
End If
Compteur = Compteur + 1
Loop
Syracuse = Compteur
End Function
Merci de me dire quand même si ça aurait pu convenir... 😉
Bonne journée 😎
 
Re : Syracuse

En fait, j'ai mis mes valeurs dans la colonne B en commençant sur la première ligne.
J'ai donc tapé dans la cellule E1: =EQUIV(1;B2:B200;0) (c'est ce qu'on appelle le temps de vol).
Pour JNP, je ne pas dire, je ne sais pas où taper ça. En tout cas, ça ressemble à ce que je tape sur calculatrice programmable.
 

Pièces jointes

Re : Syracuse

Bonjour zippog 🙂,
Ma réponse était plutôt tournée vers ta demande de base: associer le nombre d'étape pour atteindre 1 pour un nombre donné (1->3, 6->8, 2->1, 5->5, 10->6, 11->14, etc.). Alors que ton tableau posté fait le calcul sur un seul nombre. Je te poste mon fichier, tu comprendras mieux.
Bonne journée 😎
 

Pièces jointes

Re : Syracuse

Re 🙂
Comme toute macro, tu ouvre l'éditeur Visual Basic, tu insère un module, et dedans, tu colles la fonction. Ensuite, elle est utilisable directement dans tes formules (Sub est une macro qui doit être appelée, Function est une fonction qui peut être utilisée soit par une macro, soit dans la formule d'une cellule).
Bon dimanche 😎
 
Re : Syracuse

Merci, il faudra que j'étudie cela.

Tant que j'y suis, je cherche la fonction qui permet de récupérer une valeur de rang spécifié.
Je m'explique. Mes valeurs sont dans la colonne A. J'effectue un calcul sur ces valeurs (en fait nb(A:A)/4). Ensuite j'aimerais récupérer le terme correspondant dans la colonne triée par ordre croissant. Par exemple, si j'obtiens 10 (resp. 10,2) j'aimerais récupérer le 10è (resp. le 11ème) terme de la colonne rangée par ordre croissant. Par contre je ne veux pas que les termes de la colonne soit rangée par ordre croissant.
J'espère avoir été clair.

Merci d'avance.
 
Re : Syracuse

Bonjour,

Si tu n'as pas de doublons, la solution est peut-être du côté de la fonction PETITE.VALEUR

=PETITE.VALEUR(plage_cellules;10)

retourne la 10ème valeur à partir de la plus petite.

Essaye et dis nous

Si pas ça, reviens avec plus de précision, car à vrai dire, j'ai eu un peu de mal à comprendre ce que tu voulais.

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
23
Affichages
676
Réponses
15
Affichages
786
Réponses
5
Affichages
911
Réponses
2
Affichages
914
Réponses
12
Affichages
802
Retour