nombre premier ou pas!?
Publié : sam. 17/sept./2005 9:37
bon bah voila j'ai fais un p'tit programme de math fais vite fais pour passser le temp....
le programme dis simplement si le chiffre est premier ou pas....
inutile de dire que jme suis pas amusé a tester si l'utilisateur entrait des des caractère quelquonques....
on entre des entier positif et c'est tout, nan mais
par contre comment entrer des chiffres de + de 4 octets? les long me limitent a des chiffres de 4 octets au max...
bon alors si quelqu'un pouvais me dire maintenant les p'tites améliorations a faire, si y a un bug que j'ai pas vu, ou encore des optimisations? pour m'améliorer un peu....
merci
j'ai commenté un peu mais tout le monde doit connaitre c'est simple:
le programme dis simplement si le chiffre est premier ou pas....
inutile de dire que jme suis pas amusé a tester si l'utilisateur entrait des des caractère quelquonques....
on entre des entier positif et c'est tout, nan mais

par contre comment entrer des chiffres de + de 4 octets? les long me limitent a des chiffres de 4 octets au max...
bon alors si quelqu'un pouvais me dire maintenant les p'tites améliorations a faire, si y a un bug que j'ai pas vu, ou encore des optimisations? pour m'améliorer un peu....

merci

j'ai commenté un peu mais tout le monde doit connaitre c'est simple:
Code : Tout sélectionner
; Trouver des nombres premiers
Diviseurs.l = 2 ; on commence a diviser a partir de deux.... tout les chiffres sont divisibles par 1
Resultat.l = 0
Sortie.b = 0
Nombre1$ = InputRequester( "Entrez un chiffre", "Entrez un nombre entier pour vérifier s'il est premier:", "")
Nombre.l = Val(Nombre1$) ;j'ai un chiffre
If Nombre < 1 ; si le chiffre est négatif ou fais + de 4 octets bah c'est pas bon!
MessageRequester("J'ai dis!!", "j'ai dis qu'on entre que des entier plus grand que 0!! et qui font pas + de 4 octets!!")
End
EndIf
RacineDuNombre.l = Sqr(Nombre);je prend sa racine carrée
Repeat
Resultat = Nombre / Diviseurs; je divise le nombre par ses diviseurs
If Nombre = Diviseurs * Resultat ; je vérifie si le résultat est entier
Sortie = 1 ; s'il est entier on sors, le nombre n'est pas premier
Premier$ = " n'est pas premier"
Else
Diviseurs = Diviseurs + 1 ; si le résultat n'est pas entier on continue a diviser avec un chiffre plus grand
EndIf
If Diviseurs > RacineDuNombre; si on a essayé les diviseurs possibles, alors le nombre est premier
Sortie = 1
Premier$ = " est premier"
EndIf
Until Sortie = 1 ;on sais si le nombre est premier ou pas alors on sors et on l'affiche dans le message requester
MessageRequester(Premier$, "Le nombre " + Str(Nombre) + Premier$, #MB_ICONINFORMATION)
End