Savoir si un nombre est premier !!!

Soyez le premier à donner votre avis sur cette source.

Vue 15 067 fois - Téléchargée 356 fois

Description

Permet de verifier si un nombre est premier.

Source / Exemple :


'*************************************************
'* NOM : IsNPremier
'* DATE : 31/07/2000
'*
'* AUTEUR : Legay Thomas (TomAmplius)
'*
'* DESCRIPTION :
'* Verifie si un nombre est premier
'*
'*************************************************
Option Explicit
Dim Nombre As Long
Dim Temp_1 As Long

Private Function IsNpremier(ByRef Nombre As Long) As Boolean
If Nombre Mod 2 = 0 And Nombre <> 2 Then GoTo Non
'ajouter la ligne ci-dessous dans le cas ou les nombres traités sont grands
'(if right(str(Nombre) = "0" or right(str(Nombre) = "5" )and Nombre <> 5 then goto non:

For Temp_1 = 3 To Sqr(Nombre) Step 2
  If Nombre Mod Temp_1 = 0 Then GoTo Non
Next Temp_1
IsNpremier = True
Exit Function

Non:
IsNpremier = False
End Function

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
vous pourriez pas faire une fonctions qui pose une operation comme nous les humain ???
Je m'explique ...
L'ordi tronque ses resultats..or nous quand on pose une division ...on peut aller aussi loin que possible ...
Pk ne pas essayer de faire ca par exemple ... ?
du genre :

Numerateur = val(txtNumerateur.Text)
Denominateur = val(txtDenominateur.Text)

ensuite demander a l'utilisateur combien il veut de decimale ..et lui calculer ..TOUTES...
voila une bonne idée ..NON ?
t pour Darty... COmment fais tu pour calculer la racine carre d'un nombre sans utiliser Sqr ?avec une fonctions ??? aller cherches il en existe une ... ;)
Pour Pi ... euh si je le savais j'aurais deja essayer :))
hum ! hum !
j'ai encore un problème. quand j'atteinds 137438953471 je n'arrive plus à vérifier la valeur si c'est un premier. et pourtant j'ai converti nombre de long à double. vrai problème ceci m'empêche de trouver le 9ème nombre parfait qui est à 2.658*10^36. bon je sais j'abuse !!!
Salut TomAmplius, salut à tous,
J'ai jeté un oeil curieux sur ce code, et outre les 'Goto' qui font un peu désordre, je propose une autre méthode, plus courte et surtout plus propre :

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

ESTPREMIER = True
For i = 2 To Nombre - 1
If Nombre Mod i = 0 Then
ESTPREMIER = False
Exit For
End If
DoEvents
Next i
End Function

Et voilà, c'est plus sympa à taper, et surtout on est sûr de ne rien oublier.

Sur ce, pour les mordus des maths et pour rire, quelqu'un pourrais nous proposer une méthode pour calculer Pi avec un million de décimales???? ;)

Tchao
Humm pas mal mais ces 'Goto' quel enfer. Faudrait mettre des If plutot pour éviter les spagethi !

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.