Republic of Computing - Forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G ...
Voir le deal
599 €

[VB.NET] Conjecture de Syracuse

Aller en bas

[VB.NET] Conjecture de Syracuse Empty [VB.NET] Conjecture de Syracuse

Message par Skynyrd777 Sam 26 Juin 2010 - 12:22

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
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
Skynyrd777
Admin

Messages : 216
Date d'inscription : 02/06/2010

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum