|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Nombres premiers [ Algorithme / Maths ] (matovitch)
Informations & options pour cette discussion
|
dimanche 21 octobre 2007 à 13:33:54 |
Nombres premiers

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 1.5G Htz ! Helas, mon programme ne peut aller plus loin de 16 chiffres en décimal,car même si le nombre est impair : m_NbTest / 2 - Int( m_NbTest / 2 ) = 0 ----->au lieu de 0.5 ! Cette erreur est due au fait que m_NbTest est arrondi en X * EY Ex : 5,91583399118956 * 10^ 15
Ma question : Comment garder un Double en écriture décimale ?
Mat vitch
|
|
|
|
dimanche 21 octobre 2007 à 16:58:28 |
Re : Nombres premiers

BruNews
|
Aucune précision à attendre sur des flottants, pas faits pour ça.
ciao... BruNews, MVP VC++
|
|
|
|
dimanche 21 octobre 2007 à 18:15:18 |
Re : Nombres premiers

matovitch
|
Salut à BruNews ! Ta réponse est trés claire, mais ne m'avance pas pour autant...  Mais si c'est un double, le PC connait toute les décimales non (c'est pas que des 0? )? Ne peut on pas empecher la formation de ces flottants? Comment faire autrement sans ralentir le prog? Merci d'avance : Mat vitch
|
|
|
|
dimanche 21 octobre 2007 à 18:33:06 |
Re : Nombres premiers

BruNews
|
Un double ne retient au maxi que 16 chiffres en précision by design, va voir 'Représentation à virgule flottante IEEE' sur le web pour comprendre pourquoi.
Quand on a besoin de précision absolue, faut s'écrire une classe de grands entiers (viable en VB ???) ou utiliser une lib prête à l'emploi.
ciao... BruNews, MVP VC++
|
|
|
|
dimanche 21 octobre 2007 à 20:54:40 |
Re : Nombres premiers

cretthie
|
Bonjour, comme matovitch, j'aimerai bien savoir comment on fait pour creer des entier de 128 bits par exemple. D'avance, je vous remercie pour vos reponse.
|
|
|
|
dimanche 21 octobre 2007 à 21:24:02 |
Re : Nombres premiers

BruNews
|
Les langages interprétés ne sont pas faits du tout pour ce genre de sport, ça partirait sur des temps de calcul rédhibitoires.
Voilà le début (en C et ASM comme il se doit) qu'il faut mettre et compiler en DLL et qui sera à appeler depuis VB.
typedef struct _BNUINT128 { DWORD ua; DWORD ub; DWORD uc; DWORD uc; } BNUINT128;
L'addition donnerait un truc du genre: __declspec(naked) void UAdd128(BNUINT128 *a, BNUINT128 *b, BNUINT128 *dst) { __asm { mov [esp-4], edi mov edi, [esp+4] mov eax, dword ptr[edx] add eax, dword ptr[ecx] mov [edi], eax mov eax, dword ptr[edx+4] adc eax, dword ptr[ecx+4] mov [edi+4], eax mov eax, dword ptr[edx+8] adc eax, dword ptr[ecx+8] mov [edi+8], eax mov eax, dword ptr[edx+12] adc eax, dword ptr[ecx+12] mov [edi+12], eax mov edi, [esp-4] } }
ciao... BruNews, MVP VC++
|
|
|
|
dimanche 21 octobre 2007 à 21:41:17 |
Re : Nombres premiers

cretthie
|
La grande classe, je te remercie beaucoup.
A +++ cretthie
|
|
|
|
dimanche 21 octobre 2007 à 21:42:54 |
Re : Nombres premiers

BruNews
|
Réponse acceptée !
OUPS, j'ai codé par habitude en fastcall, VB et autres ne sauraient pas s'en servir. Je rectifies en stdcall.
L'addition donnerait un truc du genre: __declspec(naked) __stdcall void UAdd128(BNUINT128 *a, BNUINT128 *b, BNUINT128 *dst) { __asm { mov [esp-4], edi mov ecx, [esp+4] mov edx, [esp+8] mov edi, [esp+12] mov eax, dword ptr[edx] add eax, dword ptr[ecx] mov [edi], eax mov eax, dword ptr[edx+4] adc eax, dword ptr[ecx+4] mov [edi+4], eax mov eax, dword ptr[edx+8] adc eax, dword ptr[ecx+8] mov [edi+8], eax mov eax, dword ptr[edx+12] adc eax, dword ptr[ecx+12] mov [edi+12], eax mov edi, [esp-4] ret 12 } }
ciao... BruNews, MVP VC++
|
|
|
Cette discussion est classé dans : programme, nombre, premiers, nombres, nbtest
Répondre à ce message
Sujets en rapport avec ce message
AIdez-moi je vous en prie [ par basejumper ]
Bonjour ... alors je vous raconte. Je suis un cours optionnel (à l'école) de programmation (que j'ai eu par hasard) avec visual basic et je ne compren
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
récupération d'une variable ! [ par cyberlulu ]
Salut tout le mondedans le programme que je suis en train de faire, j'enregistre le nombre 0 dans la variable a, le nombre 1 dans la variable b, le 2
Nombre de lignes dans le programme [ par sylpar ]
Bonjour,Est-ce que quelqu'un pourrait m'aider. Je voudrais savoir si il existe un moyen de calculer rapidement le nombre de lignes de code qu'il y a d
Programme de TRI [ par jia2812 ]
Slt les progs'!Voilà, je voudrais faire 1 code qui permet de faire des tris des nombres. J'en ai fait, mais j'me demande s'il est bien optimisé?... Al
Programme De Traitement D'une Liste De Nombres [ par Keuponrouge ]
Salut à tous,je me suis mis dans la tête de réussir quelque chose mais pour cela il me faudrait un programme "sur-mesure", et n'ayant pas les connaiss
Additionner les Nombres contenus dans chaque ligne d'une Textbox [ par Dri60 ]
Bonjour, j'ai une RichTextbox qui contient ceci :Article1 1.23 €Article2 5.84 €Article122 4.25 €...Le nombre d'Articles peut varier. Je souha
Gestionnaire d'impression [ par danyboy94 ]
BonjourJe suis sur le développement d'un gestionnaire d'impression,et j'ai besoin d'aide pour trouver codes source ou documentations.J'explique,Dans u
Diviseurs d'un nombre [ par thejulienlepage ]
Bonjour à tous, voilà, je travaille sur un programme permettant d'analyser un nombre (c'est-à-dire dedonner ses diverses propriétés), et j'aimerais ca
Nombre inexistant ... [ par Emakhtila ]
Bonjour tout le monde.Voila j'ai un petit problème avec un programme vb que j'espère vous pourez m'aider à résoudre. En premier lieu j'ai une colonne
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|