Grade Numérica de Números Primos
(susam.net)- A Grade Numérica de Números Primos é uma ferramenta que mostra visualmente os padrões e a estrutura dos números primos
- Essa grade organiza os números em um formato bidimensional, permitindo entender de relance como os primos se distribuem
- Ao analisar os padrões, é possível obter insights sobre a regularidade ou aleatoriedade dos números primos
- Ajuda estudantes de programação/matemática a compreender a teoria dos primos de forma intuitiva
- Pode ser usada como material de referência para explorar a distribuição dos primos sob vários ângulos
Visão geral da Grade Numérica de Números Primos
- Esta ferramenta organiza números em uma grade bidimensional com o objetivo de distinguir visualmente se cada célula representa ou não um número primo
- O usuário pode definir os intervalos de linhas e colunas para gerar grades de vários tamanhos e formatos
- Dentro da grade, os números primos são claramente destacados por cores ou marcações, permitindo ver de imediato como eles se distribuem
- Fica mais fácil explorar padrões como distribuições regulares, diagonais e agrupamentos, o que contribui para a intuição matemática
- A ferramenta oferece uma fonte de referência útil para desenvolvedores e estudantes em trabalhos com algoritmos ou visualização
Recursos e exemplos de uso
- A posição de cada número reflete rapidamente o resultado da verificação de primalidade
- É possível processar uma grande quantidade de números de uma só vez, inclusive para explorar a distribuição de primos em números maiores
- É fácil personalizar diferentes formatos de grade, como quadrados e retângulos
- É um material importante de aprendizado e análise em ensino de matemática, pesquisa de algoritmos e apresentações visuais
- Pode ser utilizado não só em exploração matemática, mas também em desafios de programação, entrevistas e diversas outras áreas
1 comentários
Comentários no Hacker News
Olá! Ontem à noite, por diversão, fiz esta ferramenta simples de visualização em grade de números primos. Fui inspirado por um post "Show HN" que encontrei por acaso há alguns dias post. Ela usa o teste de primalidade de Miller-Rabin e toma como base os primos da sequência OEIS A014233, então consegue testar primalidade até 3317044064679887385961980. Como exemplo, veja este link. Os três círculos que aparecem ali correspondem aos primos abaixo: 3317044064679887385961783
3317044064679887385961801
3317044064679887385961813
Espero que isso também seja divertido para vocês
A visualização ficou muito legal! Seria ótimo adicionar um recurso que mostrasse qual primo é quando o mouse passa sobre um ponto. E também fico curioso se surgiriam novos padrões ao aumentar o número de colunas em X a cada linha (ou se X fosse um primo)
Obrigado por fazer isso! É muito divertido ir aumentando rapidamente o número de colunas e encontrar padrões repetidos, pequenos movimentos em espiral ou linhas com grandes curvaturas. Quando eu era mais novo, eu gostava muito do aspecto de quebra-cabeça lógico da matemática, mas no fim do ensino médio e na faculdade a matemática começou a parecer cada vez mais abstrata e difícil. Se eu tivesse tido uma ferramenta de visualização assim, acho que teria sentido os conceitos matemáticos de forma mais concreta e continuado curioso sobre as relações escondidas por trás das fórmulas
Também seria muito interessante ter um recurso para mudar a base numérica para 16 ou outras bases. Fico muito curioso para ver que mudanças de padrão apareceriam
Muito legal! Depois de ver o que você fez, eu também mergulhei pesado na parte visual para procurar padrões por conta própria :D Mas como dá para organizar colunas e linhas do jeito que quiser, no fim acho que minha tentativa não significou muita coisa :D
Vou compartilhar um jeito estranho: olho para inteiros em unidades de pack de 100 números. Se houver um primo no pack, pinto de preto; se não houver, de vermelho. O primeiro pack contém 100 inteiros consecutivos, o segundo contém um número a cada dois, o terceiro um número a cada três, e assim por diante. Cada pack começa logo depois de onde o pack anterior terminou. A linha 1 tem um pack, a linha 2 tem dois, a linha 3 tem três... e assim vai. Tem uma imagem aqui. Parece uma escrita hieroglífica de outro universo. Ainda não entendo bem por que fica assim. Para comparar com uma distribuição aleatória, dá para mudar o código assim: if (isPrime(myNum)) return 1; para if (Math.random()>0.99) return 1; e a diferença fica gritante. Tenho muita curiosidade sobre de onde vêm a simetria e as propriedades desses padrões baseados em primos
Este comentário explica bem a imagem. Essencialmente, é uma visualização de gcd(x,y), e quase não tem relação com primos. Sabendo disso, fica mais fácil entender a causa de muitos dos padrões. Ainda assim, é uma visualização realmente interessante
A explicação é um pouco diferente do código no link. Não é que o pack de ordem N seja preenchido com inteiros espaçados de N em N, mas sim que cada pack da linha N contém inteiros espaçados de N em N. Por exemplo, o primeiro pack da segunda linha é {101, 103, 105, ..., 299}, e o segundo pack é {102, 104, 106, ..., 300}. Entendendo esse princípio, o padrão fica bem explicado neste comentário
Fiquei bastante obcecado por essa ideia. No começo, achei que seria fácil ligar isso à espiral de Ulam, mas esse rabbit hole leva a resíduos polinomiais e à misteriosa "Conjecture F" (explicação). Sobre parallax primes, este link traz uma explicação mais detalhada e vários conhecimentos de fundo relacionados; em especial, fiquei bem satisfeito com a interpretação geométrica nesta página
Brinquei com isso deste jeito: exemplo. Descobri que, se você repetir só packs pares ou ímpares, o padrão de fato converge. Muito intrigante
Quero sugerir que você também desenhe a espiral de Ulam wiki da Ulam spiral. E, se isso fosse o estado inicial do Game of Life de Conway, fico muito curioso para saber se padrões interessantes evoluiriam. Acho que seria possível fazer brute-force em grades iniciais de vários tamanhos, selecionar os jogos que durem mais que alguns passos e então observar manualmente. Se algum pequeno padrão de grade ou espiral de primos gerasse algo especial, talvez o HN ficasse em polvorosa
Não é exatamente a mesma coisa, mas tenho um gerador de espiral de Ulam que fiz há mais de 10 anos. Link. Ele não marca só os primos; o tamanho do ponto é determinado pela quantidade de divisores pares que o número naquela posição tem
Mais um voto para a espiral de Ulam. No começo, eu estava me perguntando por que não apareciam diagonais. Eu esperava justamente uma espiral de Ulam
Outra ferramenta de Ulam spiral
Minha intuição sobre números primos era que eles ficavam raros muito rapidamente, mas na prática há primos demais
Os primos realmente ficam cada vez mais difíceis de encontrar. Por exemplo, se você desenhar todos os primos em uma única linha, dá para ver claramente a diferença (veja aqui). O famoso teorema dos números primos na teoria dos números trata exatamente disso. A quantidade de primos até n é aproximada por n/log n, e a densidade de primos perto de n converge para 1/log n. Você também pode ver minha explicação do teorema dos números primos e a Wikipedia
Há muita pesquisa sobre esse tema Wikipedia
A maioria das pessoas pensa assim. Acho que é porque aprendemos que encontrar primos é difícil. Na verdade, encontrar primos não é difícil. O que parece difícil para nós é determinar se um inteiro é primo. Na verdade, há mais primos do que quadrados perfeitos
Quando o valor de cols (colunas) é primo, os padrões aparecem de forma muito bonita
Quando o número de columns é um primo p, os números de cada coluna passam a ter o mesmo resto módulo p. Então os múltiplos de p deixam de ser primos, e isso faz surgir padrões diagonais
Mais do que a coluna ser prima, também surgem padrões interessantes quando cols+1 ou cols-1 têm muitos divisores (por exemplo: 25, 91, 119). Também é interessante que os números perto de primos tenham muitos divisores
Quando as colunas são 7, aparecem muitas diagonais indo do canto superior direito para o inferior esquerdo; quando são 5, do superior esquerdo para o inferior direito. Também tenho curiosidade sobre a frequência de sexy primes consecutivos. Queria saber se esse padrão se quebra em números grandes
O padrão quando
cols % 30 == 0(30, 60, 90, 120 etc.) é realmente interessante. As linhas verticais retas ficam bem evidentes. Se somar ou subtrair 1 (119 ou 121), parece que as linhas “giram” para a esquerda ou para a direita. Ferramenta de visualização muito legalA maioria dos padrões que aparecem na verdade não são propriedades dos primos. Se você marcar apenas os números que não são divisíveis pelos primeiros 100 números naturais, a figura fica quase igual
Recentemente, eu também fiz uma ferramenta de visualização de primos:
https://ilmenit.github.io/prime-fold/
Além da visualização, é uma ferramenta que usa algoritmos evolutivos e funções de fitness para encontrar funções matemáticas que geram ou contêm primos.
Modo PrimeFold (embedding 2D): você insere ou evolui duas funções, f_x(n) e f_y(n), para mapear números em coordenadas 2D. Primos e compostos são visualizados de forma diferente. Ex.: f_x(n) = n, f_y(n) = n^2.
Modo PrimeGen (geração 1D): você insere ou evolui uma única função f(n) para criar uma sequência numérica. A ferramenta visualiza se cada valor de saída é primo e quantos primos únicos existem. Ex.: f(n) = 2*n + 1
Se você configurar 1, 7, 100, parece um ticker de constelações com chevrons de Stargate :D
Se você der zoom out neste link e aumentar e diminuir o valor de cols de um em um, dá para observar mudanças no padrão. As variações de -7 até +5 são impressionantes. O mesmo vale em #1-200-420
Brincando em Python, comparei os últimos dígitos (na base 10) de primos consecutivos e encontrei uma relação interessante. Como 2 e 5 aparecem só uma vez, deixei de fora e contei a frequência das transições entre dígitos, como 1->3, 1->5, etc. Eu achava que, por os primos parecerem aleatórios, as frequências seriam quase iguais, mas havia diferenças estatisticamente significativas. Ninguém ainda sabe por quê
Meu palpite era que os primos seriam muito mais raros e que essa taxa de queda aumentaria muito mais rápido à medida que os números crescem, mas na prática ainda há muitos deles. Em [1, 10.000, 10.000], a parte de baixo ainda está bem densa. Claro que fica menos denso. O intervalo médio entre primos é
log(n)(prime number theorem)