ARITHMÉTIQUE (NOMBRES PREMIERS, PGCD, PPCM, DIVISEURS)

ricky84 Messages postés 44 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 13 janvier 2014 - 11 févr. 2003 à 08:55
Abdelelansari Messages postés 21 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 29 mars 2008 - 1 févr. 2008 à 00:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6080-arithmetique-nombres-premiers-pgcd-ppcm-diviseurs

Abdelelansari Messages postés 21 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 29 mars 2008
1 févr. 2008 à 00:03
je n'ais rien a dire vu que je suis encore un debutant en programation mais je vois qu'il est interessant ce programme. Je suis un prof de math on dit que le nombre 1 n'est pas un nombre premier .
Bon courage
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
30 nov. 2005 à 16:44
j'adore ta source vraiment belle donc je me propose a t'aider a l'ameliorer on pourrais en faire un projet commun si tu le desire ^^ sinon vla mon mail :
diablaman@hotmail.com

enfin sinon en note je met 9 car un prog est jamais parfait a 100% ^^ ++
JoVB Messages postés 87 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 10 mars 2009
2 juin 2004 à 16:42
Cool comme source !! Super prog, plein de fonctions utiles ;-)
Pour le pb de l'exe g essayer chez moi en recomplilant c le meme prob ! alors que la source joue parfaitement :-/
La je comprend pas !

Bonne prog @ tous

//JoVB
cs_Apophis Messages postés 75 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 16 septembre 2006
2 mars 2003 à 23:00
J'ai beau recompiler, avec l'exe, en effet cela ne marche pas. Mais cela fonctionne avec la source.
TheBabyCool Messages postés 34 Date d'inscription dimanche 2 septembre 2001 Statut Membre Dernière intervention 4 mars 2003
2 mars 2003 à 21:29
J'oubliai, c seulement l'exe qui foir.
TheBabyCool Messages postés 34 Date d'inscription dimanche 2 septembre 2001 Statut Membre Dernière intervention 4 mars 2003
2 mars 2003 à 21:28
La fonction PPMC donne tj un mauvais resultat...
Par exemple elle sort pour le ppmc de 5 et 6 : 5 ?!?
bonne prog
cs_Apophis Messages postés 75 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 16 septembre 2006
15 févr. 2003 à 19:25
Merci pour toutes vos remarques.
Le code a été modifié en conséquent et le fichier exe recompilé.
A+
ricky84 Messages postés 44 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 13 janvier 2014
12 févr. 2003 à 08:39
Apres verification,le code du source fonctionne correctement , c'est seulement dans l' EXE contenu dans le fichier ZIP que la fonction ppcm donne un faux resultat !
boudas Messages postés 13 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 8 octobre 2008
11 févr. 2003 à 18:45
tout en sachant que plus le nombre sera grand et plus grand sera l'écart...
boudas Messages postés 13 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 8 octobre 2008
11 févr. 2003 à 18:44
voila une fonction isprime encore mieux optimisé puisque d'aprés ce que j'ai messuré grâce à une api windows,
(Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim Debut As Long, Fin As Long
Debut = GetTickCount()
'ici le code à chronométrer
Fin = GetTickCount()
MsgBox "Temps mis en millisecondes : " & Fin - Debut)


le temps pour calculer les nombres premiers de 0 à 20 000 passe de 78s à 4 secondes ( 78146 à 4036 ms pour être tout à faît rigoureux

'Un nombre est premier s'il admet comme diviseur que 1 et lui-même. Par definition, 1 n'est pas premier.
If n <0 Then isprime False: Exit Function ' Elimine le cas ou n est inférieur à 0
If Val(Right(n, 1)) Mod 2 0 And n <> 2 Then isprime False: Exit Function 'Elimine le cas où n est pair
Dim i
Dim m As Double
m = Int(n ^ (1 / 2)) + 1 ' le calcul de l'exposant puis du int prend un temps énorme donc, on faît une variable tampon
For i = 2 To m
If n Mod i = 0 And i <> n Then
isprime = False
Exit Function
Else
isprime = True
End If
Next i

A ce que j'ai pu constater, ça donne les mêmes résultats !

Au revoir, Boudas
boudas Messages postés 13 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 8 octobre 2008
11 févr. 2003 à 18:11
Juste un tout petit truc que j'ai appris dans un bouquin pour améliorer encore ton algo pour les nombres premiers:
Si un nombre est divisible alors, l'un au moins de ses facteurs est inférieur à la racine carrée de ce nombre.
Et oui, prenon un nombre qui n'est divisible par aucun des nombres inférieurs à sa racine carrée, alors, le probléme de ses diviseurs sera ..... supérieur au carré de la racine carrée donc à ce nombre !!!

donc de façon encore plus optimisé la boucle devient

for i=2 to sqrt(n)
verifier n premier
next

Au revoir, Boudas
cs_Apophis Messages postés 75 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 16 septembre 2006
11 févr. 2003 à 10:33
Mise à jour (amélioration de l'algorithme de recherche de nombres premiers)
cs_Apophis Messages postés 75 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 16 septembre 2006
11 févr. 2003 à 10:31
->ricky84
Chez moi, quand je fais ppcm(4,6) j'obtiens bien 12 et non 4
Apophis
ricky84 Messages postés 44 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 13 janvier 2014
11 févr. 2003 à 08:55
Juste un truc : le ppcm ne marche pas !!! Le resultat est toujours inferieur ou egal au plus petit des deux nombres,ce qui n'est pas logique.
Exemple les nombres 4 et 6 : resultat 4 ,normalement ça doit etre 12 je pense
Rejoignez-nous