[VB.NET] Conjecture de Syracuse
Republic of Computing - Forum :: Programmation :: Programmation algorithmique :: Banque d'algorithmes
Page 1 sur 1
[VB.NET] Conjecture de Syracuse
Bonjour,
La conjecture de Syracuse (ou conjecture 3n+1) est un problème arithmétique dont l'énoncé est le suivant : "A partir d'un entier naturel n, si n est pair ont le divise par deux, si n est impair on le multiplie par trois et on y ajoute un. La nouvel entier généré sera soumis à ces mêmes transformations. La conjecture dit que toutes les séries ainsi formées avec n'importe quel naturel tendront vers un. Une cycle trivial apparait quand la série arrive à 4 car les nombres suivants sont 2 puis 1 puis de nouveau 4 et ainsi de suite. On arrête donc la série à 1 (le crash de la série)."
Algorithme en VB.NET
Notes : La fonction booléenne imparite() renvoie vrai si le paramètre unique d'entrée est impair ; dans le cas inverse, elle renvoie faux. Cet algorithme est écrit pour être exécuté dans la console, les dernières lignes de la procédure Main() renvoies les "paramètres de vol" de la série (plusieurs caractéristiques d'une série formée par la conjecture).
La conjecture de Syracuse (ou conjecture 3n+1) est un problème arithmétique dont l'énoncé est le suivant : "A partir d'un entier naturel n, si n est pair ont le divise par deux, si n est impair on le multiplie par trois et on y ajoute un. La nouvel entier généré sera soumis à ces mêmes transformations. La conjecture dit que toutes les séries ainsi formées avec n'importe quel naturel tendront vers un. Une cycle trivial apparait quand la série arrive à 4 car les nombres suivants sont 2 puis 1 puis de nouveau 4 et ainsi de suite. On arrête donc la série à 1 (le crash de la série)."
Algorithme en VB.NET
- Code:
Sub Main()
'' Conjecture de Syracuse ''
Dim n As Decimal = Console.In.ReadLine()
Dim s As Decimal = n
Dim a As Decimal = 0
Dim e As Decimal = 0
While s <> 1
e += 1
If imparite(s) Then
s = 3 * s + 1
Else
s /= 2
End If
If s > a Then a = s
Console.Out.WriteLine(s)
End While
Console.Out.WriteLine("-----")
Console.Out.WriteLine("Altitude maximale : " & a)
Console.Out.WriteLine("Durée de vol : " & e & " étapes")
Console.Out.WriteLine("Facteur d'expansion : " & a / n)
Console.In.ReadLine()
End Sub
Function imparite(ByVal x As Decimal) as Boolean
Return (x And 1) = 1
End Function
Notes : La fonction booléenne imparite() renvoie vrai si le paramètre unique d'entrée est impair ; dans le cas inverse, elle renvoie faux. Cet algorithme est écrit pour être exécuté dans la console, les dernières lignes de la procédure Main() renvoies les "paramètres de vol" de la série (plusieurs caractéristiques d'une série formée par la conjecture).
Dernière édition par Skynyrd777 le Sam 26 Juin 2010 - 12:39, édité 1 fois
Skynyrd777- Admin
- Messages : 216
Date d'inscription : 02/06/2010
Republic of Computing - Forum :: Programmation :: Programmation algorithmique :: Banque d'algorithmes
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum