2009-12-03 5 views
5

Je suis actuellement en train d'essayer d'écrire du code dans VBA pour résoudre un problème de Project Euler. J'ai essayé de répondre à une question qui vous oblige à trouver des nombres premiers qui peuvent être divisés en un nombre qui ne rentre pas dans un long moment. Des suggestions pour gérer ce problème? Je sais que je peux diviser le nombre entre deux variables et je l'ai fait pour l'addition et la soustraction, mais jamais la division. Toute aide serait appréciée.Numéros de traitement plus grand que Long dans VBA

+4

nombres premiers qui sont divisibles par un nombre ...? – Henrik

+0

Je pense que nous savons ce qu'il voulait dire @ Les nombres premiers de l'Agent389 ne sont pas divisibles par un nombre mais par 1 et lui-même. Vous pouvez réellement tester ceci en faisant une boucle jusqu'à la racine carrée d'un nombre. Vous pouvez probablement être encore plus rapide que cela, je sais que vous ne devriez pas avoir à aller à la moitié de ce nombre (division, donc la racine carrée est un peu plus rapide). – JonH

+0

Désolé pour le mot de passe, j'ai mis à jour la question pour le rendre plus clair. – Agent389

Répondre

1

Fondamentalement, vous êtes censé stocker les numéros sous forme de texte et créer des fonctions pour les opérations mathématiques de base comme addition, soustraction, etc.

Pour plus d'informations et la mise en œuvre, jetez un oeil ici: Large Number Arithmetic

+5

vous devriez fournir plus d'un lien qu'un – BrainO2

0

Vous pouvez écrire une classe bigint qui prend char * et stocke chaque élément dans un élément de données de liste lié de type int. De cette façon, peu importe la taille de l'entier. Ce n'est pas facile cependant, je parle d'un cours complet.

-2

Utilisation le type de données "Double" qui prend des valeurs plus grandes.

+0

L'utilisation d'un "Double" est une mauvaise idée car elle est limitée à un nombre défini de chiffres significatifs, de sorte que vous perdrez de la précision avec des nombres plus grands. – M1chael

0

Vous pouvez définir un type de données décimal (12 octets), mais uniquement dans une variante.

Dim i As Variant

i = CDec(i)

Questions connexes