Como trabalhar com inteiros grandes?
Eu proeciso trabalhar com inteiros maiores que int64 e que não estejam na forma exponencial, algo como int128 ou int256; alguém tem alguma idéia?
Edilcimar
Curtidas 0
Respostas
Ricardo.vano
17/10/2004
Olá,
Você tentou usar LongInt ?
Você tentou usar LongInt ?
GOSTEI 0
Fórum Vini
17/10/2004
Olá,
Você tentou usar LongInt ?
O tipo LongInt é de 32bits, ele precisa de muito mais que isso :lol:
Você pode declarar seu próprio tipo Int128:
type Int128 = $00000000000000..$FFFFFFFFFFFFFF;
Depois crie suas variáveis normalmente:
var I: Int128;
Para o Int256 não sei como você pode fazer, pois o Delphi não aceita tipos com 8 bytes.. Também não sei como ficará o desempenho do tipo Int128, talvez fique muito lento.. :roll:
Eu sabia de um site que abordava inteiros de 128bits, vou ver se acho ele nos meus guardados e te falo :wink:
Espero ter ajudado,
Vinicius;
GOSTEI 0
Emerson Nascimento
17/10/2004
veja se [url=http://www.latiumsoftware.com/br/pascal/0045.php]este artigo [/url] lhe ajuda em algo. veja o item 5.
GOSTEI 0
Afarias
17/10/2004
Você pode declarar seu próprio tipo Int128:
type Int128 = $00000000000000..$FFFFFFFFFFFFFF;
1) $FFFFFFFFFFFFFF não representa de forma alguma um inteiro de 128bits, na verdade, é ainda menor q um inteiro do 64bits
2) é ´impossível´ representar ou manipular inteiros maiores de 64bits na arquitetura atual dos PCs (x86) -- isso não é uma limitação do Delphi, apenas dos processadores domésticos atuais
bom, se vc precisa realmente de inteiros maiores q 64bits terá de partir para outras soluções, exemplo::
definir um Int128 como um array de 4 possições contendo inteiros de 32 bits (4x32=128), mas ai vc terá de definir tb as operações como soma, multiplicação, etc...
T+
GOSTEI 0
Edilcimar
17/10/2004
1)Não dá, tem que ser número maior que 10 elevado a 100 pois é para criptografia RSA, ou seja eu tenho que gerar os primos nesta ordem.
2)SE não dá para utilizar, como é que tem gente utilizando?
2)SE não dá para utilizar, como é que tem gente utilizando?
GOSTEI 0
Afarias
17/10/2004
2)SE não dá para utilizar, como é que tem gente utilizando?
com soluções como a mostrada no Artigo sugerido pelo emerson.en
T+
GOSTEI 0
Edilcimar
17/10/2004
E uma pergunta idiota, o meu computador leva 8 min para calcular os primos até 1 milhão, como as pessoas estão calculando-os até 10 elevado a 100? Isto leva mais de 1 mês!
GOSTEI 0
Gandalf.nho
17/10/2004
Geralmente esse tipo de cálculo usa supercomputadores ou clusters...
GOSTEI 0
Edilcimar
17/10/2004
Só que infelizmente nem todo mundo pode ter um Cray num ´cantinho´ da casa, então deve haver outro tipo de solução pois tem pessoas fazendo este tipo de cálculo com um micro
GOSTEI 0
Fórum Vini
17/10/2004
1) $FFFFFFFFFFFFFF não representa de forma alguma um inteiro de 128bits, na verdade, é ainda menor q um inteiro do 64bits
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Putz, falei bobagem nessa né? :roll:
Na verdade eu pensei em 2^7 mas acabei criando foi uma combinação de 2^( 7*8 ) bits..foi isso?
O inteiro de 128 bits seria então 2^128 combinações diferentes de bits? :shock:
Corrigindo então:
type Int56 = $00000000000000..$FFFFFFFFFFFFFF
:lol: :oops:
Desculpa pelo fora, só tentei ajudar :roll: :roll:
GOSTEI 0
Afarias
17/10/2004
|então deve haver outro tipo de solução pois tem pessoas fazendo este
|tipo de cálculo com um micro
por curiosidade,
qual seu computador e como está calculando?
o que exatamente vc deseja?
que pessoas são essas?
e, ´elas´ fazem esses famigerados cálculos com 1 micro 32bits doméstico é? não é processamento distribuido?
T+
|tipo de cálculo com um micro
por curiosidade,
qual seu computador e como está calculando?
o que exatamente vc deseja?
que pessoas são essas?
e, ´elas´ fazem esses famigerados cálculos com 1 micro 32bits doméstico é? não é processamento distribuido?
T+
GOSTEI 0
Edilcimar
17/10/2004
Eu quero calcular números primos na ordem de 10 elevado a 100 ou mais para efetuar algorítmo de criptografia RSA, e tenho um P4, quanto as pessoas que fazem estes cálculos são aquelas quer criam criptografia de 1024, 2048 bits
GOSTEI 0
Bruno Belchior
17/10/2004
no pascal existe um tipo chamado extended (extendido) que é o maior tipo possível interpretado pelo computador, vc tem que habilitá-lo (no pascal) para funcionar, pois ele é processado diretamente no processador... não sei se ele existe no delphi mas vale a pena tentar vê-lo apesar que nunca vi falar sobre ele em delphi...
GOSTEI 0
Paulo_amorim
17/10/2004
Olá
Há, sim, pessoas calculando números primos maiores que 10^100, mas normalmente isso eh feito em supercomputadores ou, como agora está mais comum, fazem uso de vários computadores domésticos, formando uma rede de processamento (como disse o afarias, processamento distribuido)
Fazer isso em um só PC, ainda mais um que você está usando, eh muito difícil que se faça em menos de 1 dia
Até+
Há, sim, pessoas calculando números primos maiores que 10^100, mas normalmente isso eh feito em supercomputadores ou, como agora está mais comum, fazem uso de vários computadores domésticos, formando uma rede de processamento (como disse o afarias, processamento distribuido)
Fazer isso em um só PC, ainda mais um que você está usando, eh muito difícil que se faça em menos de 1 dia
Até+
GOSTEI 0