Voici un nouvel algorithme de mathématique. Il permet de tester les conjectures (faible et forte) de Goldbach d'un entier naturel. Cette conjecture (forte) qui dit que tout entier naturel pair est égal à la somme de deux nombres premiers (des nombres divisibles que par eux même et un) et cette conjecture faible qui dit que tout entier naturel impair et strictement supérieur à 7 est égal à la somme de trois nombres premiers.
Notons la présence de deux tests sous forme de fonctions qui renvoient respectivement si un nombre est pair (parite(n)) ou s'il est premier (primalite(n)). On peut utiliser la fonction de parité pour prouver qu'un nombre est impair (imparité ?) en testant parite(n+1).
Source / Exemple :
Sub Main()
' Conjecture faible de Goldbach
Dim n As UInteger = 1
Do Until parite(n + 1) And n > 7
n = Console.In.ReadLine
Loop
For i As UInteger = 2 To n - 2
If primalite(i) And parite(i + 1) Then
For j As UInteger = 2 To n - i - 2
If primalite(j) And parite(j + 1) And primalite(n - i - j) And parite(n - i - j + 1) Then
Console.Out.WriteLine(i.ToString & "+" & j.ToString & "+" & (n - i - j).ToString & "=" & n.ToString)
End If
Next j
End If
Next i
Console.In.ReadLine()
End Sub
Sub ConjectureForte()
' Conjecture forte de Goldbach
Dim n As UInteger = 1
Do Until parite(n)
n = Console.In.ReadLine
Loop
For i As UInteger = 2 To n - 2
If primalite(i) And primalite(n - i) Then
Console.Out.WriteLine(i.ToString & "+" & (n - i).ToString & "=" & n.ToString)
End If
Next i
Console.In.ReadLine()
End Sub
Function primalite(ByVal n As UInteger) As Boolean
For i As UInteger = 2 To Math.Sqrt(n)
If n / i = Int(n / i) Then Return False
Next i
Return True
End Function
Function parite(ByVal n As UInteger) As Boolean
Return Not (n And 1) = 1
End Function
Conclusion :
Une fois de plus je publie une très petite source, et ce car les algorithmes peuvent être intéressants et parce qu'ils peuvent permettre à quelqu'un qui ne la connaissait pas de s'intéresser à cette conjecture. Je vous avoue que je suis très friand de sources algorithmiques sur ce site !
Je ne suis pas sûr que cet algorithme le plus performant mais il a l'avantage de donner (il me semble) toutes les combinaisons possibles de sommes et d'éviter les doublons (7+7=14 et 7+7=14). Si vous voyez des améliorations n'hésitez pas, on est là pour ça !
Merci de votre attention ! Skanenruf.
PS. Les tests de parité et de primalité peuvent servir à d'autres algorithmes.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.