begin process at 2012 02 16 05:35:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > NOMBRES PREMIERS

NOMBRES PREMIERS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :7 336 / 336

Auteur : MLH19

Ecrire un message privé
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

Les Membres Club peuvent 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.

 Sources du même auteur

Source avec Zip CONTROLE NOMBRE INSEE

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE AFFINE par Tigrou66
Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip EQUATIONSECONDDEGRÉ,MATH,DEGRÉ par shadkitenge
Source avec Zip Source .NET (Dotnet) SOMME DE CHIFFRES CONTENUE DANS UN NOMBRE par alpha5

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) [VB 8][.NET 2]LES DIVISEURS D'UN NOMBRE + NOMBRES PREMIERS (... par FREMYCOMPANY
Source avec Zip CODEUR À CLE par niicoola
Source avec Zip Source avec une capture TROUVER DES NOMBRES PREMIERS par vbPink
Source avec Zip NOMBRE PREMIER AUTRE METHODE par Axar
Source avec une capture Source .NET (Dotnet) FACTORISATION EN NOMBRES PREMIERS par chewbaka62

Commentaires et avis

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.

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.

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+


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

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.

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.

Commentaire de MLH19 le 15/01/2007 09:33:20

Bonjour,

Merci pour cette amélioration.

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 Nombres premier et OpenOffice.calc [ par Taur33 ] Bonjour à tous, j'aurais besoin d'une fonction ou une procedure qui : 1.permet de savoir si un nombre en A1 est premier(ex 11) 2.si oui placer 1 devan 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 fonction Rnd [ par greg33170 ] Bonjour, J'utilise la fonction Rnd afin de générer sur un ensemble donnée de nombre plusieurs nombres aléatoires. Jusqu'ici tout va bien mais j'aimer conversion de date en nombres entiers et l'inverse [ par gridha ] bonjour par diffdate j'arrive a déterminer le nombre de jours séparant 2 dates mais comment pourrai je convertir une date déterminée en nombre entier Un nom de variable ... variable! [ par Brocart ] Bonjour à tous ! Voilà, j'essaye de créer un programme qui va classer des valeurs par ordre croissant ou décroissant, le nombre de nombres entrés étan 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales