begin process at 2012 02 14 03:41:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > VÉRIFIER QU'UN NOMBRE EST PREMIER : ALGORITHME PARUT DANS LE S&V DE NOV 2002

VÉRIFIER QU'UN NOMBRE EST PREMIER : ALGORITHME PARUT DANS LE S&V DE NOV 2002


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Niveau :Expert Date de création :26/11/2002 Date de mise à jour :27/11/2002 15:59:40 Vu / téléchargé :8 323 / 252

Auteur : Sophus

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

 Description

Cliquez pour voir la capture en taille normale
Voici l'algorithme crée par 3 informations indiens en nov 2002.
En théorie ce code fait 11 lignes de code mais en pratique ...

Source

  • Dans le Zip : le scan de l'algo + sa transcription en VB
Dans le Zip : le scan de l'algo + sa transcription en VB 

 Conclusion

Ce code est utile pour montrer la primalité de très grands nombres.
Le VB n'étant pas très axé sur les caculs, on voit vite arriver une erreur de "dépassement de capacité".
Ces lignes de codes sont donc à transcrire dans un autre language ( mettez vous au C ++ !)

Si vous avez des remarques ou d'autres exemples de la transcription du code en VB n'hésitez pas à me les faire parvenir.

 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 du même auteur

Source avec Zip OUTIL D'AUTOMATISATION DE TACHES (ENREGISTRE CLICS ET TOUCHE...
Source avec Zip Source avec une capture DECRYPTEUR DE TEXTE CRYTE PAR REMPLACEMENT DE LETTRE PAR UNE...
Source avec Zip TROUVEZ LA LISTE DES NOMBRES PREMIERS TRES RAPIDEMENT !
Source avec Zip Source avec une capture DÉCOMPOSITION DE NOMBRES EN FACTEURS PREMIERS
Source avec Zip KEYLOGGER / ENREGISTRE / SIMULE EN TEMPS RÉEL !

 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 Sophus le 26/11/2002 17:39:49

J'espères que ca pourrait être utile à quelqu'un (nottamment à comics) !

Commentaire de ovRflow le 26/11/2002 18:51:06

Une ptite interface explicative + evité une erreur de division par zero quand c premier et c'est parfait!

Commentaire de VicoLaChips2 le 26/11/2002 19:20:03

VB fait un "dépassement de capacité" parce que le code n'est pas optimisé...
en plus, division par zéro = pas géré. C++ c'est bien. Mais je pense que avec quelques API un vbiste peut faire presque aussi bien qu'un c++ iste !
(vous noterez le "presque...")
1- pas de typage de variables = pas bon
2- code pas indenté = pas bon
3- Interface ésotérique = pas bon...

Ma note = 4

@+

Commentaire de VbMaster le 26/11/2002 19:44:11

Ben pour plus avoir "Division par 0", il suffit de mettre "On error resume next". Et ça marche, comme par magie !!

Commentaire de VicoLaChips2 le 26/11/2002 19:58:28

Je pense qu'il faut faire attention avec les 'on error resume next'. si tu met un on error resume next avec le code actuel une fois sur deux tu vas avoir un chiffre premier... le problème c'est q... on pourrait dire if q <> 0 then... mais bon !!
j'ai pas encore capté l'astuce mais ... ça va venir !

@+

Commentaire de Setaou le 26/11/2002 20:01:42

oaip c'est clair qu'il ya un probleme dans la transcription de l'algo, ca devrait pas arriver ca ... pi faudrait declarer les variables !

Commentaire de cosmic le 26/11/2002 20:43:55

merci.
Mais c'est COSMIC et non pas COMICS
OK!!!
Alors c'est good...

ça serait cool d'avoir le code original pour qu'on puisse le transcrire nous même...
Et a l'occasion mettre nos résultats en commun...

Commentaire de VicoLaChips2 le 26/11/2002 21:32:33

Euuhh ,
l'algo est foireux (du moins par rapport à ce que j'en connais présentement, à savoir la copie d'écran du source...) Si on part du principe que le mille borne est un bon jeu pour la famille, on peut écrire :

Function IsPrime(ByVal valeur As Double) As Boolean
    Me.MousePointer = vbHourglass
    
    Dim i As Double, j As Double
    IsPrime = True: j = valeur
    
    For i = 2 To j - 1
        valeur = j / i
        If i > 999 Then
            Me.MousePointer = vbDefault
            Exit Function
        End If
    
       If InStr(CStr(valeur), ",") = 0 Then
           IsPrime = False
           Me.MousePointer = vbDefault
           Exit Function
       End If
       DoEvents
    Next
    Me.MousePointer = vbDefault
End Function

Commentaire de 6Po le 27/11/2002 09:16:09

C'est pas plus facile ca ? J'ai juste pas tester le 1 :D
Donc 1 sera premier à vous de corriger lol ... (un petit oubli :D)

un if n = 1 then isPrime =false :exit function irra tres bien...

fo enlelver les msgbox c'etait juste pour moi quand j'ai testé :D

Public Function isPrime(ByVal n As Long) As Boolean
    Dim milieu As Long
    Dim resultat As Boolean
    milieu = CLng(Sqr(n))
    resultat = True
    
    If n Mod 2 <> 0 Then
        For i = 3 To milieu Step 2
            If n Mod i = 0 Then
                resultat = False: MsgBox "Il est divisible par " + CStr(i)
                Exit For
            End If
        Next i
    Else
        If n <> 2 Then resultat = False: MsgBox "Il est divisible par 2"
    End If
    
    isPrime = resultat
End Function

Commentaire de 6Po le 27/11/2002 09:26:17

LOL j'ai regardé le source apres avoir répondu au commentaire laissé par les autres !

Je veux juste dire un truc, la version des dits INDIENS est merdique :D

En plus je vois pas pkoi la notation de log et de puissance viens foutre la dedans. C'est plus pour ralentir le code qu'autre chose !

Tu peux mettre niv 1 pour ton source, car c'est un amateur qui a du faire ce truc, il a jms touche a de la prog avant mais par contre c'est un doué un math... voila tout !

Je sais pas sur mais je crois que le language LISP ou ADA, permet de faire des calcul style
54546654654654654 ^ 4834043798324794 mod 3728173389723 en 1 sec... peut etre qu'avec ce language leur méthode serait bien rentabale mais la :D

Commentaire de 6Po le 27/11/2002 09:32:17

C'est encore moi pardon...
Heu 2 n'est pas un nombre permier en Inde ? J'ai pourtant fait un an de math la bas, et il me semblait bien qu'il est était premier.... :D
Je confirme ce que je disais avant sauf que je retire la ligne ou j'ai écris "est doué en math" en fait c'est un mec qui a jms touche une ligne et qui n'a jms compris comment calculé un nb premier.... enfin c'est perso

Commentaire de Zeroc00l le 27/11/2002 13:30:58

6Po euh machin ^machin mod machin ca se calcule grace au congruence.
Je pense que je serais capable de faire un programme similaire ...
Si certaine personnes y tiennent , je le ferai, sinon bon ben tant pis ... :)

Commentaire de Sophus le 27/11/2002 15:49:04

1. Merci de vos commentaires !

Commentaire de Sophus le 27/11/2002 15:49:24

2. La capture ce n'est pas mon algo, c'est celui de 3 informatiens indiens.

Commentaire de Sophus le 27/11/2002 15:50:01

3. J'ai mis quelques commentaires (alors qu'il suffit de voir la capture pour comprendre mais bon )

Commentaire de Sophus le 27/11/2002 15:50:16

4. La source que j'ai faite n'est qu'une "traduction" de l'algo en VB, je n'essaie pas de faire mes propres lignes de code.

Commentaire de Sophus le 27/11/2002 15:50:25

5. Cosmic je suis désolé d'avoir écorché ton pseudo.

Commentaire de Sophus le 27/11/2002 15:50:43

6. 6Po > C'est le premier algo pour prouver la primalité d'un grand nombre rapidement (d'après S & V)

Commentaire de Sophus le 27/11/2002 15:52:01

7. Zeroc00l > Il y a déjà plein de sources sur le site pour faire ca !

Commentaire de Sophus le 27/11/2002 15:52:48

8. L'erreur "division par zero" a été revue.

Commentaire de Sophus le 27/11/2002 15:53:08

9. Bah y a une nouvelle mise à jour !

Commentaire de Sophus le 27/11/2002 16:02:29

10. Voila c'est mis à jour !

Commentaire de Sophus le 27/11/2002 16:03:00

11. Je crois que j'ai plus rien à dire là ! ;)

Commentaire de GRenard le 27/11/2002 20:37:04

putain, c'est compliqué tout ca... y suffit de faire le sqr du nombre et de diviser ce nombre de 2 à sqr(nombre) et s'il est divisble par un de ces nombres (premiers), bien le nombre n'est pas premier !
c'est simple ! pourquoi tout compliquer ?

Commentaire de Sophus le 27/11/2002 21:01:23

j'ai déjà fait ca :
http://www.vbfrance.com/article.aspx?Val=6434 (pour décomposer 1 nbr en facteurs premiers)
http://www.vbfrance.com/article.aspx?Val=6483 (pour sortir la liste des nbrs premiers)

mais cet algorithme est censé être bien plus rapide pour les très grand nombre (utilisés en cryptographie par exemple) de plusieurs dizaines de chiffres.

Commentaire de kleuvert le 14/12/2002 23:01:38

comment chu mort de rire ! d'après ton programme, 9 est un nombre premier ! lol, merci, ca m'a bien fait rire ;o)

Commentaire de violent_ken le 02/09/2005 20:47:13

Par définition, 1 n'est pas premier.
Et dans le prog, les multiples de 5, 9 et 7 (pour ne citer qu'eux) et non multiples de 2 (ex : 9,27,21,45,555554545...) sont déclarés nombres premiers...
A revoir, donc.

Commentaire de us_30 le 02/05/2009 20:31:55

Bonjour,

Avec 27, on a un overflow... ?

A y regarder dans le code, je vois beaucoup de chose à redire. Par exemple :
(1 Mod r) donnera toujours 1 ! Je pense que la programmation ne suit pas l'algorithme de la capture...

Amicalement,
Us.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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 : 1,170 sec (4)

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