Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

NOMBRES PREMIERS


Information sur la source

Catégorie :Maths Classé sous : nombres, premiers, nombrespremiers, nombre, premier Niveau : Débutant Date de création : 19/12/2006 Date de mise à jour : 11/01/2007 10:36:53 Vu / téléchargé: 4 868 / 292

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

L'utilisateur entre un nombre entier positif au clavier et appuie sur Entrée ou clique sur OK pour savoir si ce nombre est premier ou non.
 

Source

  • Public Sub funcPremier()
  • On Error GoTo errEntier 'Si autre chose qu'un nombre entier est tapé au clavier
  • Dim N As Long
  • Dim i As Long
  • i = 2
  • N = CInt(Form1.txtPremier.Text)
  • Select Case N ' Traitement des cas possibles
  • Case Is < 0
  • Form1.lblPremier.Caption = "Il faut entrer un nombre positif ou nul..."
  • Form1.lblPremier.FontSize = 20
  • Form1.lblPremier.AutoSize = True
  • Case Is = 2
  • Form1.lblPremier.Caption = "2 est un nombre premier, c'est le seul" _
  • & " nombre pair premier !"
  • Form1.lblPremier.FontSize = 20
  • Form1.lblPremier.AutoSize = True
  • Case Is <= 1
  • Form1.lblPremier.Caption = "Ce nombre n'est pas premier"
  • Form1.lblPremier.FontSize = 20
  • Case Else
  • While (i < Sqr(N)) And ((N Mod i) <> 0) 'Algorithme pour déterminer si le nombre
  • i = i + 1 ' est premier ou non
  • Wend
  • If (N Mod i) <> 0 Then
  • Form1.lblPremier.Caption = "Ce nombre est premier"
  • Form1.lblPremier.FontSize = 20
  • Else
  • Form1.lblPremier.Caption = "Ce nombre n'est pas premier"
  • Form1.lblPremier.FontSize = 20
  • End If
  • End Select
  • Exit Sub
  • errEntier:
  • If Err.Number = 13 Then 'Traitement de l'erreur si l'utilisateur entre un nombre non entier
  • intReponse = MsgBox("Veuillez taper un nombre entier svp !", vbOKOnly, "Attention!")
  • End If
  • End Sub
Public Sub funcPremier()
    On Error GoTo errEntier   'Si autre chose qu'un nombre entier est tapé au clavier
        Dim N As Long
        Dim i As Long
        i = 2
        N = CInt(Form1.txtPremier.Text)
            Select Case N   ' Traitement des cas possibles
            Case Is < 0
            Form1.lblPremier.Caption = "Il faut entrer un nombre positif ou nul..."
                Form1.lblPremier.FontSize = 20
                Form1.lblPremier.AutoSize = True
            Case Is = 2
                Form1.lblPremier.Caption = "2 est un nombre premier, c'est le seul" _
                & " nombre pair premier !"
                Form1.lblPremier.FontSize = 20
                Form1.lblPremier.AutoSize = True
            Case Is <= 1
                Form1.lblPremier.Caption = "Ce nombre n'est pas premier"
                Form1.lblPremier.FontSize = 20
            Case Else
                While (i < Sqr(N)) And ((N Mod i) <> 0)  'Algorithme pour déterminer si le nombre
                i = i + 1                               ' est premier ou non
                Wend
                If (N Mod i) <> 0 Then
                    Form1.lblPremier.Caption = "Ce nombre est premier"
                    Form1.lblPremier.FontSize = 20
                Else
                    Form1.lblPremier.Caption = "Ce nombre n'est pas premier"
                    Form1.lblPremier.FontSize = 20
                End If
            End Select
    Exit Sub
errEntier:
        If Err.Number = 13 Then   'Traitement de l'erreur si l'utilisateur entre un nombre non entier
        intReponse = MsgBox("Veuillez taper un nombre entier svp !", vbOKOnly, "Attention!")
        End If
End Sub

Conclusion

Suite à vos remarques, voici les rectifications sur le code du module.
Ca devrait être mieux comme ça.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 décembre 2006 15:11:00 :
Deux rectifications : 1- Mise de la variable N en Long + conversion de la chaine de caractère en Int 2- Modification du logarithme de calcul : la boucle s'arrête à la racine carrée...
11 janvier 2007 10:36:53 :
Aucune.

Commentaires et avis

signaler à un administrateur
Commentaire de yvesyves le 19/12/2006 22:33:19

Attention tu confonds les types de variables. N est un long et tu y enregistres du string, tu dois normalement convertir ce type de données. I ne devrait pas être déclaré double mais Long, c'est un entier tu l'incrémentes de 1 à chaque fois.

signaler à un administrateur
Commentaire de MLH19 le 21/12/2006 09:33:54

Bonjour,

Merci Yves pour cette remarque.
Je débute, tout conseil est le bien venu. Merci encore.

signaler à un administrateur
Commentaire de chaibat05 le 21/12/2006 12:30:50

Bonjour,

Vérifie cette affirmation pour voir.
je n' en suis pas sûr, mais je crois l' avoir
lu quelque part, il y' a lontemps de ça:
"Tout les nombres <=7, et qui ne sont pas divisibles...
par 2 sont premiers
Pour les nombres >7, est premier
celui qui n' est divisible :
ni  par 2, ni par 3, ni par 5, ni par 7."

On parle bien sûr de division entière.

A+


signaler à un administrateur
Commentaire de chaibat05 le 21/12/2006 13:31:42

ce qui est sûr c' est qu' il suffit de se limiter
à la racine carrée de N :
While (i < Sqr(N) And ((N Mod i)<>0)
c' est plus court...
Exemple avec 41 : au lieu de 20, le test s' arrêtera à 6.
car :
s' il n' est pas divisible par 7, il ne le sera pas par 14.
"            "                 8  "          "          16                    
"            "                 9  "          "          18.
En plus s' il n' est pas divisible par 2 il ne le sera pas par 8.
même chose pour 9 et 3

signaler à un administrateur
Commentaire de MLH19 le 21/12/2006 14:17:11

Bonjour CHAIBAT,

Tu as raison ; je vais limiter la boucle à la racine carrée...c'est suffisant.
Merci pour cette remise à l'ordre mathématique.
En plus ça va permettre au programme de moins "travailler".
A plus.

signaler à un administrateur
Commentaire de us_30 le 12/01/2007 22:31:55

Bonsoir,

Pour ne pas avoir à traiter de nombre décimal, on peut plus simplement écrire :
N = Val(Form1.txtPremier.Text)
Ensuite pour aller un peu plus vite, on peut dans la boucle While, faire une incrémentation par 2 "i=i+2" en prenant garde que i n'est pas pair, sinon faire +1 pour la première fois...

Amicalement,
Us.

signaler à un administrateur
Commentaire de MLH19 le 15/01/2007 09:33:20

Bonjour,

Merci pour cette amélioration.

signaler à un administrateur
Commentaire de matovitch le 04/08/2007 19:16:02

Salut !
Je suis arrivé un peux tard pour les commementaires...:(
Tu divise par 2 (je crois que us_30 a oublié de le dire...) puis par tout les impairs < = à l'entier (inférieur) de la racine.
Attention préciser que 1 n'est pas premier !

Bon Prog !Voic quelques idée :

* Quand le nombre n'est pas premier donner son diviseur et le factoriser en produit de nombres premier...
* Et enfin donner le nombre d'itération et le temps...

7/10

PS : j'ai fait un tel programme sur Casio 35 + !Performance : 16.3 sec pour demontrer que 4521683 est divisible par 677...pas rapide ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Nombres premiers [ par matovitch ] Salut à tous !Je programme un test de primalité (un nombre est premier ou pas) "assez efficasse"   :  5915833991189567 premier en moins de 10 sec avec Liste de dn nombres premiers supérieurs à di [ par NGUYENTRITHIEN ] Veuillez trouver ci-dessous le code source pour avis. C'est une macro qui capte la valeur de :* -di  (entier positif de départ ) dans la cellule B1 de besoin d' un script vb [ par dorine82 ] salut à tous,j'ai besoin d'un script vb qui me permette de générer aléatoirement un nombre donné de chiffre préalablement défini.(une fonction qui gén Nombre aléatoires... [ par bilaloch ] Bonjour à tous,Je voudrais poser une question très simple mais tout de même assez dangereuse. J'ai programmé un logiciel en utilisant les "rnd" pour g Excel -> format des nombres [ par zen69 ] Bonjours à tous!J'ai essayer de faire un affichage personalisé pour les nombre d'un colonne mais sans succès.Je me suis basé sur le format "finance" e Additionner les Nombres contenus dans chaque ligne d'une Textbox [ par Dri60 ] Bonjour, j'ai une RichTextbox qui contient ceci :Article1    1.23 €Article2    5.84 €Article122    4.25 €...Le nombre d'Articles peut varier. Je souha nombre premier [ par moumaiag ] bonjourje veux un code d'un bouton "premier" qui me détermine si un nombre entré dans un textbox est un nombre premier ou non et un grand  merci pour Je voudrais faire un soft qui compte tous les nombres premier de 1 a l infinit .... [ par ab44 ] bonjoursJe voudrais faire un soft qui compte tous les nombres premier de 1 a l'infinit et divises ces derniers par leur racine.ab44 VB6 Supprimer des nombres après la virgule [ par JeffC1977 ] Salut...Je suis &#224; la recherche du code pour pourvoir supprimer une quantit&#233; de chiffre ap&#232;s la virgulePar exemple, j'ai le nombre 52,99 voyage 200 [ par cricrinature ] &nbsp; Bonjour, je voudrai cr&#233;er un programme permettant de v&#233;rifier si un nombre est premier ou pas (c'est-&#224;-dire s'il n'est divisible


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 4,789 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.