Great Internet Mersenne Prime Search

 Nota: Não confundir com GIMP.
Logo de GIMPS

A Great Internet Mersenne Prime Search (GIMPS) é um projeto colaborativo de voluntários que usam um software gratuito e amplamente disponível para buscar números primos de Mersenne.

O GIMPS foi fundado em 1996 por George Woltman, que também escreveu o cliente Prime95 e sua versão portada para Linux, o MPrime. Scott Kurowski escreveu o servidor back-end PrimeNet para demonstrar o software de computação voluntária da Entropia, uma empresa que ele fundou em 1997. O GIMPS é registrado como Mersenne Research, Inc., tendo Kurowski como Vice-Presidente Executivo e membro do conselho de diretores. Diz-se que o GIMPS é um dos primeiros projetos de computação voluntária em larga escala através da Internet para fins de pesquisa.

Até outubro de 2024, o projeto já havia encontrado 18 primos de Mersenne, 16 dos quais eram o maior número primo conhecido na época em que foram descobertos. O maior número primo conhecido é 2136.279.841 − 1 (ou M136.279.841, de forma abreviada) e foi descoberto em 12 de outubro de 2024, por Luke Durant. Em 18 de junho de 2025, o projeto ultrapassou um marco importante após todos os expoentes abaixo de 136.279.841 terem sido verificados pelo menos uma vez.

Algoritmo

Desde a sua concepção até 2018, o projeto dependeu principalmente do teste de primalidade de Lucas–Lehmer (LL), um algoritmo que é tanto especializado para testar primos de Mersenne quanto particularmente eficiente em arquiteturas de computador com sistema binário. Antes de aplicá-lo a um dado número de Mersenne, havia uma fase de divisão por tentativa, usada para eliminar rapidamente muitos números de Mersenne com fatores pequenos. O algoritmo p − 1 de Pollard também é usado para buscar fatores suaves. A variante de LL usada na implementação principal (Prime95) baseia-se especificamente na transformada discreta ponderada de base irracional com números de ponto flutuante de precisão dupla, que fornece uma maneira eficiente de elevar ao quadrado um número grande em módulo 2P − 1.

Um cuidado especial é tomado para garantir que o uso de números de ponto flutuante não introduza erros no cálculo de LL. O programa verifica se o erro de arredondamento não é superior a 0,4 a cada 128 iterações, ou se o expoente sendo testado está dentro de 0,5% do tamanho máximo de expoente que pode ser processado pelo tamanho da FFT em uso (ou caso seja solicitado usando uma opção especial), a cada única iteração. A cada 12 horas, o programa executa uma verificação de erro adicional baseada no símbolo de Jacobi, com uma chance de 50% de detectar um erro. Além disso, cada cálculo LL concluído é repetido por um hardware diferente para "verificação dupla" (double-checking). Com base no histórico de dados de verificação dupla, cada cálculo LL sem qualquer erro grave relatado teve uma taxa de erro de 1,5%; aqueles com pelo menos um erro grave relatado tiveram uma taxa de erro de 50%.

Em 2018, o GIMPS adotou um teste de primalidade de Fermat com base a = 3 como uma opção alternativa para o teste de primalidade, ao mesmo tempo em que manteve o teste LL como uma verificação dupla para números de Mersenne detectados como primos prováveis pelo teste de Fermat. Este novo teste é chamado de PRP (primo provável) na linguagem do GIMPS. Utilizando um método desenvolvido por Robert Gerbicz, o GIMPS pode ter "99,999+%" de certeza de que um resultado PRP é gerado corretamente. Como resultado, mesmo que o teste LL seja determinístico e o teste de Fermat apenas probabilístico, a probabilidade de o teste de Fermat encontrar um pseudoprimo de Fermat que não seja primo é muito menor do que a taxa de erro do teste LL devido a erros no hardware do computador (soft errors).

Em setembro de 2020, o GIMPS passou a suportar provas de primalidade baseadas em funções de atraso verificáveis (verifiable delay functions) fornecidas por Krzysztof Pietrzak. Os arquivos de prova são gerados enquanto o teste de primalidade de Fermat está em andamento. Essas provas, juntamente com o algoritmo de verificação de erros de Gerbicz, fornecem total confiança na exatidão do resultado do teste e eliminam a necessidade de verificações duplas (a verificação da prova poderia ser executada em 1/100 do tempo do cálculo original de Fermat). Os testes LL de primeira vez foram descontinuados em abril de 2021, deixando o LL para ser usado apenas nos primos prováveis encontrados pelo teste de Fermat. O PRP e o LL têm tempos de execução semelhantes; a preferência decorre da maior confiança nos resultados do PRP.

O GIMPS também tem subprojetos para fatorar números compostos conhecidos de Mersenne e números de Fermat. Estes utilizam a fatoração de curvas elípticas (ECM) e o algoritmo p + 1 de Williams.

História

O projeto começou em janeiro de 1996 com um programa que rodava em computadores i386. O nome do projeto foi cunhado por Luke Welsh, um de seus primeiros pesquisadores e codescobridor do 29º primo de Mersenne. Várias dezenas de pessoas ingressaram em poucos meses e mais de 1.000 ao final do primeiro ano. Joel Armengaud, um participante, descobriu a primalidade do M1.398.269 em 13 de novembro de 1996. Desde então, o GIMPS tem descoberto um novo número primo de Mersenne a cada 1 a 2 anos, em média, mas o maior número primo mais recente, encontrado em outubro de 2024, levou quase seis anos para ser encontrado.

Status

Até julho de 2022, o GIMPS registrava uma taxa de transferência (throughput) agregada média sustentada de aproximadamente 4,71 PetaFLOPS (ou PFLOPS). Em novembro de 2012, o GIMPS mantinha 95 TFLOPS, garantindo teoricamente ao computador virtual do GIMPS a 330ª posição entre os sistemas de computador mais poderosos do mundo na lista do TOP500. A posição anterior era então ocupada por um 'HP Cluster Platform 3000 BL460c G7' da Hewlett-Packard. A partir dos resultados da TOP500 de julho de 2021, os números atuais do GIMPS não fariam mais parte da lista.

Essa capacidade era de cerca de 50 TFLOPS no início de 2010, 30 TFLOPS em meados de 2008, 20 TFLOPS em meados de 2006 e 14 TFLOPS no início de 2004.

Software

Prime95

O software principal usado pelo GIMPS é o Prime95, que implementa todos os algoritmos para uma CPU x86 ou x86-64: fatoração por tentativa (trial factoring, geralmente deixada para as GPUs), PRP, P-1, P+1, ECM e certificação PRP. Embora o código-fonte do software Prime95 esteja publicamente disponível, tecnicamente ele não é um software livre, pois exige que os usuários sigam os termos de distribuição do projeto. Especificamente, se o software for usado para descobrir um número primo com pelo menos 100.000.000 de dígitos decimais, o usuário ganhará apenas US$ 50.000 do prêmio de US$ 150.000 oferecido pela Electronic Frontier Foundation. Por outro lado, o usuário ganhará US$ 3.000 ao descobrir um primo menor que não se qualifique para o prêmio principal.

O GIMPS também "reserva-se o direito de alterar esta EULA (Contrato de Licença de Usuário Final) sem aviso prévio e com efeito retroativo razoável."

Softwares de terceiros

Softwares de terceiros não compartilham das mesmas restrições do Prime95. Eles podem ser usados para aderir ao GIMPS utilizando um programa chamado AutoPrimeNet, que busca as tarefas no GIMPS e devolve os resultados. O software disponível inclui:

Além disso, o PrimeNet aceita outras formas de contribuição de dados vindas de projetos como o TJOAI (o software personalizado de Tadashi Taura para tentar fatorar simultaneamente muitos números de Mersenne).

Primos encontrados

Todos os primos de Mersenne têm a forma Mp = 2p − 1, onde p é um número primo. O menor primo de Mersenne desta tabela é 21.398.269 − 1.

A primeira coluna é a classificação do primo de Mersenne na sequência (ordenada) de todos os primos de Mersenne; O GIMPS encontrou todos os primos de Mersenne conhecidos começando a partir do 35º.

#Data de
descoberta
Primo MpQuantidade
de dígitos
ProcessadorMétodo
3513 de novembro de 1996M1 398 269420.921Pentium (90 MHz)Prime95 LL
3624 de agosto de 1997M2 976 221895.932Pentium (100 MHz)
3727 de janeiro de 1998M3 021 377909.526Pentium (200 MHz)
381 de junho de 1999M6 972 5932.098.960Pentium (350 MHz)
3914 de novembro de 2001M13 466 9174.053.946AMD Athlon T-Bird (800 MHz)
4017 de novembro de 2003M20 996 0116.320.430Pentium (2 GHz)
4115 de maio de 2004M24 036 5837.235.733Pentium 4 (2.4 GHz)
4218 de fevereiro de 2005M25 964 9517.816.230Pentium 4 (2.4 GHz)
4315 de dezembro de 2005M30 402 4579.152.052Pentium 4 (2 GHz com overclock para 3 GHz)
444 de setembro de 2006M32 582 6579.808.358Pentium 4 (3 GHz)
456 de setembro de 2008M37 156 66711.185.272Intel Core 2 Duo (2.83 GHz)
464 de junho de 2009M42 643 80112.837.064Intel Core 2 Duo (3 GHz)
4723 de agosto de 2008M43 112 60912.978.189CPU Intel Core 2 Duo E6600 (2.4 GHz)
4825 de janeiro de 2013M57 885 16117.425.170Intel Core 2 Duo E8400 @ 3.00 GHz
497 de janeiro de 2016M74 207 28122.338.618Intel Core i7-4790
5026 de dezembro de 2017M77 232 91723.249.425Intel Core i5-6600
51[†]7 de dezembro de 2018M82 589 93324.862.048Intel Core i5-4590T
52[†]21 de outubro de 2024M136 279 841[‡]41.024.320Nvidia A100Gpuowl PRP (verificado usando LL no Prime95, PRPLL, CUDALucas, etc.)

^ † A partir de 13 de maio de 2026, 80.504.321 é o maior expoente abaixo do qual todos os outros expoentes primos foram verificados duas vezes, portanto, não se sabe ainda se existem números primos de Mersenne não descobertos entre o 50º (M77232917) e o 52º (M136279841) nesta tabela; portanto, a classificação é provisória. Além disso, 140.063.639 é o maior expoente abaixo do qual todos os outros expoentes primos foram testados pelo menos uma vez, portanto, todos os números de Mersenne abaixo do 52º primo de Mersenne foram testados.

^ ‡ O número M136279841 tem 41.024.320 dígitos decimais. Para ajudar a visualizar o tamanho desse número, se ele fosse salvo no disco rígido, o arquivo de texto resultante teria quase 42 megabytes de tamanho (a maioria dos livros em formato de texto puro tem menos de dois megabytes). O layout padrão de um processador de texto (50 linhas por página, 75 dígitos por linha) exigiria 10.940 páginas para exibi-lo. Se fosse impresso usando papel de impressora padrão, com texto apenas de um lado, seriam necessárias aproximadamente 22 resmas (22 × 500 = 11.000 folhas) de papel.

Como mencionado acima, todo resultado do teste de Lucas-Lehmer passa por uma verificação dupla (double-checking) para evitar falsos positivos e falsos negativos. Resultados positivos recebem maior escrutínio. A importância disso foi ilustrada em 2003, quando um falso positivo foi relatado ao servidor como sendo um primo de Mersenne, mas a verificação posterior falhou.

A "data de descoberta" oficial de um número primo é a data em que um humano notou pela primeira vez o resultado para o primo, o que pode diferir da data em que o resultado foi inicialmente relatado ao servidor. Por exemplo, o M74207281 foi relatado ao servidor em 17 de setembro de 2015, mas o relatório passou despercebido até 7 de janeiro de 2016.

Notas

  1. ↑ a=2 não funcionaria, pois todos os números de Mersenne são 2-pseudoprimos.
  2. ↑ Não está provado nem refutado que pseudoprimos de Mersenne na base 3 existam.
  3. ↑ Para entender a justificativa por trás dessa busca, consulte o projeto relacionado Projeto Cunningham.

Referências

  1. ↑ «Volunteer computing». BOINC. Consultado em 25 de dezembro de 2021. Cópia arquivada em 18 de dezembro de 2021
  2. ↑ «GIMPS Discovers Largest Known Prime Number: 2136,279,841 − 1». Mersenne Research, Inc. 21 de outubro de 2024. Consultado em 21 de outubro de 2024. Cópia arquivada em 4 de novembro de 2024
  3. ↑ «GIMPS Project Discovers Largest Known Prime Number: 282,589,933-1». Mersenne Research, Inc. 21 de dezembro de 2018. Consultado em 21 de dezembro de 2018. Cópia arquivada em 8 de setembro de 2023
  4. ↑ «GIMPS Milestones Report». Mersenne.org. Mersenne Research, Inc. Consultado em 5 de dezembro de 2020. Cópia arquivada em 3 de setembro de 2016
  5. ↑ «What are Mersenne primes? How are they useful?». GIMPS Home Page. Arquivado do original em 23 de setembro de 2008
  6. 1 2 3 4 «GIMPS - The Math - PrimeNet». www.mersenne.org
  7. ↑ Prime95 distribution, undoc.txt
  8. ↑ «mersenneforum.org - Questions on PRP - PRP and strong PRP tests». Consultado em 7 de outubro de 2024. Cópia arquivada em 7 de outubro de 2024
  9. ↑ «GIMPS - the Math - PrimeNet». Consultado em 25 de setembro de 2022. Cópia arquivada em 25 de setembro de 2022
  10. ↑ «mersenneforum.org - View Single Post - Getting reliable LL from unreliable hardware». mersenneforum.org. Consultado em 5 de outubro de 2022. Cópia arquivada em 25 de setembro de 2022
  11. ↑ «mersenneforum.org - View Single Post - Getting reliable LL from unreliable hardware». mersenneforum.org. Consultado em 5 de outubro de 2022. Cópia arquivada em 25 de setembro de 2022
  12. ↑ «Announcements». GIMPS, the Great Internet Mersenne Prime Search. Consultado em 1 de setembro de 2021. Cópia arquivada em 14 de agosto de 2021
  13. ↑ «What's new». Consultado em 1 de setembro de 2021. Cópia arquivada em 21 de abril de 2021
  14. ↑ «Prime95 v30.3». Consultado em 1 de setembro de 2021. Cópia arquivada em 1 de setembro de 2021
  15. ↑ Woltman, George (16 de junho de 2020). «The Next Big Development for GIMPS». GIMPS forum. Consultado em 20 de maio de 2022. Cópia arquivada em 16 de outubro de 2022
  16. 1 2 Woltman, George (8 de abril de 2021). «First time LL is no more». Consultado em 19 de maio de 2022. Cópia arquivada em 15 de julho de 2021
  17. ↑ Preda, Mihai (22 de agosto de 2025). «preda/gpuowl». GitHub. Consultado em 2 de setembro de 2025. Cópia arquivada em 26 de agosto de 2025
  18. ↑ «PrimeNet ECM Progress». Consultado em 20 de maio de 2022. Cópia arquivada em 20 de maio de 2022
  19. ↑ «The Mersenne Newsletter, Issue #9». Consultado em 2 de outubro de 2011. Arquivado do original em 6 de fevereiro de 2012
  20. ↑ «mersenneforum.org - View Single Post - Party on! GIMPS turns 10!!!». www.mersenneforum.org. Consultado em 22 de dezembro de 2018. Cópia arquivada em 2 de julho de 2021
  21. ↑ Woltman, George (24 de fevereiro de 1996). «The Mersenne Newsletter, issue #1» (txt). Great Internet Mersenne Prime Search (GIMPS). Consultado em 16 de junho de 2009. Cópia arquivada em 17 de julho de 2009
  22. 1 2 Woltman, George (15 de janeiro de 1997). «The Mersenne Newsletter, issue #9» (txt). GIMPS. Consultado em 16 de junho de 2009. Cópia arquivada em 5 de maio de 2010
  23. ↑ «The Mersenne Newsletter, Issue #9». Consultado em 25 de agosto de 2009. Arquivado do original em 5 de maio de 2010
  24. ↑ Woltman, George (12 de abril de 1996). «The Mersenne Newsletter, issue #3» (txt). GIMPS. Consultado em 16 de junho de 2009. Cópia arquivada em 5 de maio de 2010
  25. ↑ Woltman, George (23 de novembro de 1996). «The Mersenne Newsletter, issue #8» (txt). GIMPS. Consultado em 16 de junho de 2009. Cópia arquivada em 5 de maio de 2010
  26. ↑ «PrimeNet Activity Summary». GIMPS. Consultado em 19 de julho de 2022. Cópia arquivada em 12 de janeiro de 2021
  27. ↑ «PrimeNet Activity Summary». GIMPS. Consultado em 5 de abril de 2012. Cópia arquivada em 12 de janeiro de 2021
  28. ↑ «TOP500 - November 2012». Consultado em 22 de novembro de 2012. Arquivado do original em 5 de outubro de 2018
  29. ↑ TOP500 per November 2012; HP BL460c with 95.1 TFLOP/s (R max).«TOP500 - Rank 329». Consultado em 22 de novembro de 2012. Cópia arquivada em 28 de novembro de 2012
  30. ↑ «Software Source Code». Mersenne Research, Inc. Consultado em 16 de março de 2013. Cópia arquivada em 18 de outubro de 2013
  31. ↑ «EFF Cooperative Computing Awards». Electronic Frontier Foundation. 29 de fevereiro de 2008. Consultado em 19 de setembro de 2011. Cópia arquivada em 9 de novembro de 2008
  32. ↑ «AutoPrimeNet - download.mersenne.ca». download.mersenne.ca. Consultado em 28 de agosto de 2025. Cópia arquivada em 23 de agosto de 2025
  33. ↑ «Mlucas README "(The not-PC-only version ;)"». Consultado em 28 de agosto de 2025. Cópia arquivada em 12 de setembro de 2025
  34. ↑ «GIMPS List of Known Mersenne Prime Numbers». Mersenne Research, Inc. Consultado em 3 de janeiro de 2018. Cópia arquivada em 7 de junho de 2020
  35. ↑ Woltman, George. «mersenneforum.org - Drought ends! (M52 Found)». Consultado em 6 de novembro de 2025. Cópia arquivada em 25 de maio de 2025. Prime95: Hoje, um novo primo provável de Mersenne foi relatado ao servidor! A prova de PRP foi rapidamente certificada, provando que não houve erros durante os cálculos. Testes de LL usando o prime95 e o prpll estão em andamento. Talvez um teste LL Mlucas também devesse ser executado. A verificação provavelmente levará alguns dias. Redigir um comunicado de imprensa e encontrar um meio de comunicação interessado também levará algum tempo. Até lá, o expoente não será anunciado. [...] (as respostas incluem várias execuções independentes do LL)
  36. ↑ «GIMPS Milestones». Mersenne Research, Inc. Consultado em 30 de novembro de 2020. Cópia arquivada em 3 de setembro de 2016
  37. ↑ «M40, what went wrong? - Page 11 - mersenneforum.org». mersenneforum.org. Consultado em 22 de dezembro de 2018. Cópia arquivada em 30 de abril de 2019
  38. ↑ «GIMPS Project Discovers Largest Known Prime Number». 19 de janeiro de 2016. Consultado em 25 de setembro de 2019. Cópia arquivada em 7 de janeiro de 2018

Ligações externas