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)

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.5GHtz !

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 ?

   Matvitch

dimanche 21 octobre 2007 à 16:58:28 | Re : Nombres premiers

BruNews

Administrateur CodeS-SourceS
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 :  Matvitch

dimanche 21 octobre 2007 à 18:33:06 | Re : Nombres premiers

BruNews

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS

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

Administrateur CodeS-SourceS
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


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.