Nombre premier ?

0/5 (1 avis)

Snippet vu 3 806 fois - Téléchargée 64 fois

Contenu du snippet

Il suffit d'appeler cette fonction qui renverra vrai si Nombre est un nombre premier (vous l'aurez compris). Pas de difficulté particulière...

Source / Exemple :


Public Function ESTPREMIER(Nombre as Long) as Boolean
Dim i as Integer

ESTPREMIER = True
For i = 2 To Int(Sqr(Nombre)) + 1
    If Nombre Mod i = 0 Then
       ESTPREMIER = False
       Exit For
    End If
  DoEvents
Next i
End Function

Conclusion :


... vous noterez toutefois :
- la petite astuce pour s'affranchir des nombres 0 et 1 dans la boucle "FOR" sans avoir à tester ces deux cas particuliers.
- on ne test que jusqu'à la racine carré du nombre (s'il n'existe pas de dénominateur plus petit que la racine carré du nombre à tester, pour obtenir un entier, il n'y en aura pas plus grand que cette racine). D'où une vitesse de test accrue. (Grand Merci à flyer257 pour ce rappel).

Le DoEvents est là pour que vous puissiez jouer à Tetris alors que vous avez lancer le test pour 1234567891... ;)

A voir également

Ajouter un commentaire

Commentaire

Tu n'as pas besoin de tester jusqu'à (Nombre-1), mais jusqu'à int(sqr(nombre))+1,
car s'il n'y a pas de facteurs entiers entre 1 et la racine carrée du nombre, il n'y en aura pas après la racine carrée, excepté le nombre lui-même, bien sûr.

Si tu as besoin de plus d'explications, n'hésite pas à m'écrire.

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.