Numeros Primos de Mersenne

113 views
Skip to first unread message

Antonio Donato Filho

unread,
Jan 27, 2014, 12:13:00 AM1/27/14
to python...@googlegroups.com
Numeros de Mersenne são gerados dessa forma 2**4423-1 este tem 1.332 Digitos e foi encontrado em 1961. (||http://pt.wikipedia.org/wiki/Primo_de_Mersenne || )
Eu gerei esse numero testei com Script Python || http://pastebin.com/wfS3eFFs || sabendo que é Primo nenhuma surpresa.
Mas tem uma coisa sobre numeros de Mersenne nem sempre o resultado é um numero Primo, se seria muito facil na verdade é como encontrar um diamante.
Pois bem eu gerei um numero com 21 milhões de digitos e usando este Script deu erro de memoria e travou o PC (4G Ram).
Não abre com nenhum editor de texto, só no Windows encontrei um editor trial o EditPad pro7 .
Nem no pastbin aceitou tem 20,8Mb.
Alguem tem uma ideia para me ajudar?
Ou devo desistir?

Nicolas Coelho

unread,
Jan 27, 2014, 12:29:23 AM1/27/14
to python...@googlegroups.com
O que você pretende fazer com isso?
Testar se é um número primo?
Ou apenas visualizar o número?


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Nicolas Zachow Coelho

"Do what you think is interesting, do something that you think is fun and worthwhile, because otherwise you won't do it well anyway." - Brian Kernighan

Douglas Camata

unread,
Jan 27, 2014, 12:48:56 AM1/27/14
to python...@googlegroups.com
É, este script está enorme. Facilmente você encontra ótimos scripts para verificar se um número é primo em Python, cada um com suas otimizações diferentes, talvez eles te ajudem. Além disso, visto que você está trabalhando com um número de tamanho colossal, talvez Python não seja a melhor opção... ou simplesmente você precise de um hardware bem melhor do que o seu atual.


2014-01-27 Nicolas Coelho <nic...@nicolas.eti.br>



--
Douglas Camata
Graduando em Ciência da Computação (UENF)

Skype: douglas_camata
-----------------------------------
Linux User #509211

adf....@terra.com.br

unread,
Jan 27, 2014, 1:02:28 AM1/27/14
to "Douglas Camata", python...@googlegroups.com
Tomara que seja problema de maquina .
Sim testar o numero o que esta no scriip eu já. Testei.
Sera que abrir um arquivo fora do script melhora isso? Descupe erros estou digitannddo do cel.

Em hoje 03:58 Douglas Camata escreveu:
É, este script está enorme. Facilmente você encontra ótimos scripts para verificar se um número é primo em Python, cada um com suas otimizações diferentes, talvez eles te ajudem. Além disso, visto que você está trabalhando com um número de tamanho colossal, talvez Python não seja a melhor opção... ou simplesmente você precise de um hardware bem melhor do que o seu atual.


2014-01-27 Nicolas Coelho <nic...@nicolas.eti.br>
O que você pretende fazer com isso?



--
Douglas Camata
Graduando em Ciência da Computação (UENF)

Skype: douglas_camata
-----------------------------------
Linux User #509211

--

Marcos Thomaz

unread,
Jan 27, 2014, 1:24:01 AM1/27/14
to python...@googlegroups.com
O que exatamente você quer fazer? Você quer abrir esse arquivo ? Ler o conteúdo e verificar se é primo?
Marcos Thomaz da Silva
Analista de Tecnologia da Informação

adf....@terra.com.br

unread,
Jan 27, 2014, 5:13:41 AM1/27/14
to python...@googlegroups.com

Bom dia.

Comprovar a Primalidade do numero co 21.872.149 Digitos.

Como este que estou enviando o arquivo só quem bem menor.





Em Seg 27/01/14 04:24, Marcos Thomaz marcos...@gmail.com escreveu:
O que exatamente você quer fazer? Você quer abrir esse arquivo ? Ler o conteúdo e verificar se é primo?
Marcos Thomaz da Silva
Analista de Tecnologia da Informação
x_file.rar

Welton Vaz

unread,
Jan 27, 2014, 6:07:54 AM1/27/14
to python...@googlegroups.com
O python é uma das melhores linguagem para gerar, manipular números grandes. Acredito que possa 
ser um problema da maquina, se vc puder use um live-cd com ubuntu e rode o script novamente.


Welton Vaz de Souza
TWITTER: http://twitter.com/Weltonvaz
BLOG: http://ghandybh.blogspot.com/
FACEBOOK: https://www.facebook.com/weltonv
Cel: (31)88623904



Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Plano é melhor que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para se quebrar as regras.
Embora a simplicidade supere o purismo.
Erros nunca deveriam passar silenciosamente.
A menos que explicitamente silenciados.
Ao encarar a ambiguidade, recuse a tentação de adivinhar.
Deveria haver uma – e preferencialmente apenas uma – maneira óbvia de se fazer isto.
Embora aquela maneira possa não ser óbvia à primeira vista se você não for holandês.
Agora é melhor que nunca.
Embora nunca, seja muitas vezes melhor que pra .
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma idéia estupenda – vamos fazer mais deles!
***********************************************************

Antonio Donato Filho

unread,
Jan 27, 2014, 6:13:27 AM1/27/14
to python...@googlegroups.com

Bom dia!
Ok vou tentar no ubuntu.

> Bonito é melhor que feio.
> Explícito é melhor que implícito.
> Simples é melhor que complexo.
> Complexo é melhor que complicado.
> Plano é melhor que aninhado.
> Esparso é melhor que denso.
> Legibilidade conta.
> Casos especiais não são especiais o bastante para se quebrar as regras.
> Embora a simplicidade supere o purismo.
> Erros nunca deveriam passar silenciosamente.
> A menos que explicitamente silenciados.
> Ao encarar a ambiguidade, recuse a tentação de adivinhar.
> Deveria haver uma – e preferencialmente apenas uma – maneira óbvia de se fazer isto.
> Embora aquela maneira possa não ser óbvia à primeira vista se você não for holandês.
> Agora é melhor que nunca.
> Embora nunca, seja muitas vezes melhor que pra já.
> Se a implementação é difícil de explicar, é uma má idéia.
> Se a implementação é fácil de explicar, pode ser uma boa idéia.
> Namespaces são uma idéia estupenda – vamos fazer mais deles!
> ***********************************************************
>

> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>  
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>  
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>  
> ---

> Você recebeu esta mensagem porque está inscrito em um tópico do grupo "Python Brasil" dos Grupos do Google.
> Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/python-brasil/7jQjtnu_1MY/unsubscribe.
> Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Welton Vaz

unread,
Jan 27, 2014, 7:10:22 AM1/27/14
to python...@googlegroups.com
def isPrime(p):
    if(p==2): return True
    if(not(p&1)): return False
    return pow(2,p-1,p)==1
a = 285542542228279613901563566102164008326164238644702889199247456602284400390600653875954571505539843239754513915896150297878399377056071435169747221107988791198200988477531339214282772016059009904586686254989084815735422480409022344297588352526004383890632616124076317387416881148592486188361873904175783145696016919574390765598280188599035578448591077683677175520434074287726578006266759615970759521327828555662781678385691581844436444812511562428136742490459363212810180276096088111401003377570363545725120924073646921576797146199387619296560302680261790118132925012323046444438622308877924609373773012481681672424493674474488537770155783006880852648161513067144814790288366664062257274665275787127374649231096375001170901890786263324619578795731425693805073056119677580338084333381987500902968831935913095269821311141322393356490178488728982288156282600813831296143663845945431144043753821542871277745606447858564159213328443580206422714694913091762716447041689678070096773590429808909616750452927258000843500344831628297089902728649981994387647234574276263729694848304750917174186181130688518792748622612293341368928056634384466646326572476167275660839105650528975713899320211121495795311427946254553305387067821067601768750977866100460014602138408448021225053689054793742003095722096732954750721718115531871310231057902608580607
print (isPrime(a))

Com esta pequena função acima, que baseada no pequeno teorema de Fermat(http://pt.wikipedia.org/wiki/Teste_de_primalidade_de_Fermat), consegui provar que o seu numero é primo.

adf....@terra.com.br

unread,
Jan 27, 2014, 9:28:22 AM1/27/14
to python...@googlegroups.com

Welton, é rapidinho True, valeu.





Em Seg 27/01/14 10:10, Welton Vaz welt...@gmail.com escreveu:
def isPrime(p):
    if(p==2): return True
    if(not(p&1)): return False
    return pow(2,p-1,p)==1
a = 285542542228279613901563566102164008326164238644702889199247456602284400390600653875954571505539843239754513915896150297878399377056071435169747221107988791198200988477531339214282772016059009904586686254989084815735422480409022344297588352526004383890632616124076317387416881148592486188361873904175783145696016919574390765598280188599035578448591077683677175520434074287726578006266759615970759521327828555662781678385691581844436444812511562428136742490459363212810180276096088111401003377570363545725120924073646921576797146199387619296560302680261790118132925012323046444438622308877924609373773012481681672424493674474488537770155783006880852648161513067144814790288366664062257274665275787127374649231096375001170901890786263324619578795731425693805073056119677580338084333381987500902968831935913095269821311141322393356490178488728982288156282600813831296143663845945431144043753821542871277745606447858564159213328443580206422714694913091762716447041689678070096773590429808909616750452927258000843500344831628297089902728649981994387647234574276263729694848304750917174186181130688518792748622612293341368928056634384466646326572476167275660839105650528975713899320211121495795311427946254553305387067821067601768750977866100460014602138408448021225053689054793742003095722096732954750721718115531871310231057902608580607
print (isPrime(a))

Com esta pequena função acima, que baseada no pequeno teorema de Fermat(http://pt.wikipedia.org/wiki/Teste_de_primalidade_de_Fermat), consegui provar que o seu numero é primo.
>>>>>>> Pois bem eu gerei um numero com 21 milhões de digitos e usando este Script deu erro de memoria e travou o PC (4G Ram.



--

Jhonathan Banczek

unread,
Jan 27, 2014, 10:11:04 AM1/27/14
to python...@googlegroups.com
Python pode ser usado, como qualquer outra linguagem para teste de primalidade, o problema é a complexidade do algoritmo.
Existem algoritmos, que são probabilisticos, como o teste de fermat, entre outros que PODEM responder errado para det. números, e existem algoritmos deterministicos em tempo polinomial como o AKS.
Procure implementar os diferentes métodos pra comparar.

José Ricardo Borba

unread,
Jan 27, 2014, 10:14:01 AM1/27/14
to python...@googlegroups.com
E use o numpy/scipy para trabalhar com números exoticamente grandes.

Abraço,

José Ricardo Borba

Em 27 de janeiro de 2014 13:11, Jhonathan Banczek
<jpba...@gmail.com> escreveu:

adf....@terra.com.br

unread,
Jan 27, 2014, 10:45:44 AM1/27/14
to python...@googlegroups.com

já estou testando agra usando meu numero e está usando 1/3 da memoria com o Script do Welton Vaz..

Grato


José Ricardo Borba por enquanto não foi preciso, obrigadão.
Grato a todos pela ajuda, abraços.
​Antonio




Em Seg 27/01/14 13:11, Jhonathan Banczek jpba...@gmail.com escreveu:
Python pode ser usado, como qualquer outra linguagem para teste de primalidade, o problema é a complexidade do algoritmo.
Existem algoritmos, que são probabilisticos, como o teste de fermat, entre outros que PODEM responder errado para det. números, e existem algoritmos deterministicos em tempo polinomial como o AKS.
Procure implementar os diferentes métodos pra comparar.


Em segunda-feira, 27 de janeiro de 2014 03h13min00s UTC-2, Antonio Donato Filho escreveu:
Reply all
Reply to author
Forward
0 new messages