begin process at 2012 02 16 04:50:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > NOMBRES PREMIERS

NOMBRES PREMIERS


 Information sur la source

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Niveau :Débutant Date de création :08/12/2002 Date de mise à jour :08/12/2002 22:55:16 Vu / téléchargé :1 278 / 97

Auteur : Baff

Ecrire un message privé
Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

 Description

Juste pour trouver autant de nombres premiers qu'on le demande.
C'est mon premier post, je débute, le code est un peu tordu et (très) mal commenté, mais je suis assez content de sa rapidité (19 secondes pour 500 000 nbres premiers sur un duron 1Ghz, mais un fichier texte de 5Mo). J'attends vos commentaires avec impatience, y'a sûrement des choses à améliorer.


 Conclusion

MAJ du ZIIIIP

 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


 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

Commentaires et avis

Commentaire de Bricomix le 08/12/2002 20:42:09

Ben sur mon Athlon XP1800+ (euh, j'ai un petit problême avec ma carte mère, donc il est qu'a 1150Mhz au lieu de 1500MHz), j'ai fait 16 secondes pour les 500000. En tout cas c'est bien, j'en avais fait un beaucoup plus beau, mais 10x moins rapide. Très bon code (un petit peu tordu quand même) : 9/10

Commentaire de Vbsupernul le 08/12/2002 21:12:19

Super le prog:
Pentium 4 à 1695 Mhz, moins de 23 secondes pour trouver UN MILLION de nombres premiers...
Y faudrait juste rajouter un chronomètre ;)
10/10!!!

Commentaire de Baff le 08/12/2002 21:22:18

Merci beaucoup, j'suis flatté !
Je me suis bien creusé les méninges aussi faut dire.

Commentaire de Vbsupernul le 08/12/2002 21:25:00

Ouè, ben qd même, essaie de rajouter un chrono, parcke j'ai essayé mais le chrono bouge pas, toute la mémoire est captée par le calcul...

Commentaire de tex le 08/12/2002 21:32:36

...y en a qu'on la bosse des maths en ce moment sur vbfrance :-)

Commentaire de Baff le 08/12/2002 21:52:06

Ok, je vais essayer pour le chrono, mais si ça doit ralentir, j'vois pas bien l'intérêt... Faut ruser p'têt... Mais ça risque de prendre un peu de temps, c'est vrai que je débute. Merci pour les conseils.
A+

Commentaire de Baff le 08/12/2002 23:01:10

D'ailleurs ça y est, je me suis servi d'un code posté par Popi (merci à lui :-) ) pour les calculs sur les heures, le zip est mis à jour.

Commentaire de Vbsupernul le 09/12/2002 08:26:59

12 secondes pour 500000...
C vraiment super rapide

Commentaire de Vbsupernul le 09/12/2002 08:33:06

Lol, à quand la ^m chose pour faire avancer seti@home + vite ? :D

Commentaire de Proger le 09/12/2002 10:00:36

Ce qui est impressionant c'est surtout la vitesse via interpréteur de code (mode création de vb) et la vitesse de l'exécutable compilé en code natif :
- 1700 ms en interpreteur
- 230 ms en exe natif.
(j'ai ajouter un chti chrono bien sûr pour avoir ces resultats)
mais on peux mieux faire encore ! en se débarassant de la booleenne "erreur" on gagne quelques ms (je te laisse trouver comment)

Commentaire de ronanry le 09/12/2002 10:16:52

si ton code est si bien que ca...(j'ai aps encore regarder :-p (honte a moi))
bref si c si bien... les clefs publiques (je parle niveau cryptage la) ont du souci a se faire...

Commentaire de Proger le 09/12/2002 13:28:49

Le chrono précis :
dans le sub command_click :
t1! = Timer
Call calcul(NbrMax, t())
t2! = Timer
label.caption = (t2! - t1!) * 1000 & " ms"

Commentaire de Bafff le 09/12/2002 14:23:39

Merci Proger pour le code, justement je galérais la-dessus, en plus, mon login baff marche pus, j'ai dû rajouter un "f". Je cherche pour virer le booleen, mais c'est pas concluant pour l'instant, je perd du temps.
Vbsupernul, pour le seti@home c'est vrai qu'il faudrait accélérer un peu les calculs.
Et en ce qui concerne le cryptage, y'a des gens bien plus calés qui cherchent depuis longtemps, et qui doivent rigoler en voyant mon code. Merci pour l'aide et les commentaires, ça motive tout plein....

Commentaire de Proger le 09/12/2002 18:33:30

Bon, Baff², indice : utilise GoTo pour remplacer le booleen. Je sais, c'est "sale", mais c'est rapide. Par la même occasion tu te débarasse des tests superflu (y'en a!) et tu réduit à une ligne le test a mod t(x) = 0 then goto ... tu gagnes 5% de vitesse. vala :) à vot' service msieur dame.
ps : j'aime bien les artefacts que tu utilises pour optimiser le code, mais tu en a oublié 1 : tout chiffre se terminant par 5 n'est pas premier, donc, en plaçant judicieusement un "mod 5 = 0" tu peux encore grapillé.

Commentaire de TheBabyCool le 09/12/2002 23:12:36

moi j'ai fait un autre algo qui arrive a env. 1million en moin de 20s sur mon p2 400mhz.

Commentaire de TheBabyCool le 09/12/2002 23:12:47

Mais très bien quand meme

Commentaire de Bricomix le 10/12/2002 19:36:02

Pour Baff, efface tout ce qu'il y a dans la procédure sub "calcul" et mets-ça, c'est 2 fois plus rapide (mon athlon a 1150MHz a fait - de 23 secondes les 1 millions, au lieu de 43 au départ !!!) :

Dim a As Long, n As Long, x As Long, y As Double

ReDim t(nbr + 2)

a = 3 'on demarre direct en testant 3
n = 1
y = 2 'sera la racine carrée du nombre à tester
t(1) = 2

While n <= nbr
  x = 1
  If n Mod 2 = 0 Or n Mod 5 = 0 Then GoTo LTomber
  While x <= n And t(x) < y
    If a Mod t(x) = 0 Then GoTo NFirst
    x = x + 1
  Wend
LTomber:
    n = n + 1
    t(n) = a
NFirst:
  a = a + 2
  y = Sqr(a + 1)
Wend

Commentaire de Baffff le 10/12/2002 21:09:29

Vi, j'ai bien pensé à un truc comme ça, mais en bon étudiant modèle, on m'a dit d'éviter les GOTO, alors, j'évitais les GOTO. Ceci dit effectivement c'est 2 fois plus rapide. Par contre, je peux pas changer la source, y faut que je recrée un compte à chaque fois que je veux me connecter, comprend pas... Mon login va finir par être long :-). Merci à tous pour votre aide
A+

Commentaire de Baffff le 10/12/2002 23:48:07

Heu, Bricomix, au fait, vérifie quand même car ça marche jusqu'à 7, après il me trouve que 9 est un nb premier, y'a un binz....
J'ai pas le temps de coder pour l'instant, je regarde demain.

Commentaire de Bricomix le 11/12/2002 15:33:27

En faites je me suis complètement trompé, alors je l'ai remodifié, et voilà le nouveau code (environ 5% plus rapide que l'original) ... voilà le nouveau code :

Dim a As Long, n As Long, x As Long, y As Double

ReDim t(nbr + 2)

a = 3 'on demarre direct en testant 3
n = 1
y = 2 'sera la racine carrée du nombre à tester
t(1) = 2

While n <= nbr
  x = 1
  While x <= n And t(x) < y
    If a Mod t(x) = 0 Then GoTo NFirst
    x = x + 1
  Wend
  n = n + 1
  t(n) = a
NFirst:
  a = a + 2
  y = Sqr(a + 1)
Wend

Commentaire de Baffff le 11/12/2002 19:03:04

Vi, j'ai fait à peu près le meme dans le train c't'aprèm (je l'ai pas sous les yeux), on peut aussi commencer avec x = 2 pour éviter de tester la division par 2 pour chaque nombre
(en modifaint 2 ou 3 trucs)

Commentaire de Julien39 le 06/05/2006 10:06:37 administrateur CS

Beaucoup de maladresses pour le calcul, la boucle while peut aisément être remplacée par une for, le code est illisible, non commenté et tu n'utilise aucune des optimisations possibles.
5/10 parce qu'il fonctionne et pour le calcul du temps

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,421 sec (4)

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