Algorithme arithmétique
Rapports de Stage : Algorithme arithmétique. Recherche parmi 300 000+ dissertationsPar roufman • 13 Janvier 2015 • 686 Mots (3 Pages) • 916 Vues
Module Module1
' Algorithmes d'arithmétique
' Exercice 5 fiche 1
' Test de primalité d'un entier
' Algorithme 2 : On teste tous les entiers impairs p de 2 à racine(n)
' Avantage : le temps d'exécution est proportionnel à racine(n)/2, ce qui est beaucoup plus rapide que le premier algorithme
' Temps d'exécution de l'algorithme mesuré avec Timer
Sub Main()
Dim n, p As Integer
Dim Debut As Double
Console.WriteLine("Test de primalité d'un entier n ")
Console.WriteLine()
Console.WriteLine("Saisir l'entier n (Mini : 2 , Maxi 2 147 483 647 )")
n = Console.ReadLine()
Debut = Timer
' on teste d'abord la divisibilité par 2
If n Mod 2 = 0 Then
If n = 2 Then
Console.WriteLine("l'entier {0} est premier", n)
Else
Console.WriteLine("l'entier {0} n'est pas premier, il est multiple de 2", n)
End If
' on teste ensuite la divisibilité par les entiers impairs plus petits que racine(n)
' on teste donc 3, 5, 7, ... pour cela on incrémente p de 2 à chaque boucle
Else
p = 3
While n Mod p <> 0 And p ^ 2 <= n
p = p + 2
End While
' si n = 3, on ne passe pas dans la boucle, ce qui crée un cas particulier
' si n est premier, on sort de la boucle quand p^2 dépasse n
' si n n'est pas premier, on sort de la boucle quand on p est un diviseur de n
' Les mots clés And et Or permettent de créer des conditions "multiples"
If (n Mod p <> 0 And p ^ 2 > n) Or n = 3 Then
Console.WriteLine("l'entier {0} est premier", n)
Else
Console.WriteLine("l'entier {0} n'est pas
...