![M. Vert :mrgreen:](./images/smilies/icon_mrgreen.gif)
Due originellement à Lothar Collatz, la conjecture dite de Syracuse (du nom de l'université du même nom, près de New York, qui l'a popularisée) est vraiment simple : prenez un nombre entier quelconque. Si il est pair, divisez-le par 2, sinon multipliez le par 3 et ajoutez 1. Cela donne un nouveau nombre. Recommencez la même procédure à partir de celui-ci. Vous obtenez une suite de nombres. Il semble qu'au bout d'un certain nombre d'itérations (le "temps de vol"), la suite "atterrisse" toujours sur le nombre 1, ce qui donne ensuit invariablement 4, 2, 1, 4, 2, 1, …
Sauf que personne n'a jamais su démontrer cette conjecture. On ignore si il n'existerait pas au moins un nombre, très grand (car on en a déjà testé vraiment beaucoup), tel que la suite n'arrive jamais à 1. Certains s'y sont cassé les dents, d'autres ont prétendu avoir réussi (y compris récemment un personnage médiatique aux motivations douteuses(*)), mais non, rien à faire.
(*) En fait la vidéo n'en parle pas, malgré l'image-titre !
Mathador vous conte cette histoire (avec la collaboration sympathique d'autres youtubeurs) :
Pour ceux que ça intéresse, j'ai fait un petit programme Python qui trace cette suite jusqu'à son "atterrissage" et je joins aussi une figure en exemple.
# Suite de Syracuse
import math
import matplotlib.pyplot as plt
#
n = 837799
#
cntmax = 5
axmult = 0.01
#
x = []
y = []
#
m = n
x.append(0)
y.append(m)
#
cnt = 0
stop = 0
i = 1
#
while cnt < cntmax:
i = i+1
x.append(i-1)
if m%2 == 0:
y.append(m/2)
else:
y.append(3*m+1)
m = y[i-1]
if m == 1:
cnt = cnt+1
if cnt == 1:
stop = i-1
#
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y,"r:",linewidth=0.5)
ax.plot(x,y,"b.",markersize=1)
ax.plot(x[stop],y[stop],"ro",markersize=2)
t = ax.yaxis.get_offset_text()
t.set_size(10)
plt.axis([0,i-1,-axmult*max(y),max(y)*(1+axmult)])
plt.xlabel('Itération',fontsize=10)
plt.ylabel('Valeur',fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.title("Suite de Syracuse pour n = "+str(n)+", temps de vol = "+str(stop),fontsize=12)
plt.grid(True)
plt.show()
plt.savefig('Syracuse.png',dpi=600)