Crivo de Eratóstenes Simples em C
Publicado por Perfil removido (última atualização em 14/05/2012)
[ Hits: 10.159 ]
Crivo simples. Valores devem ser ajustados.
Obs[1]: Dependendo do compilador, sistema ou memória disponível, corrigir para não haver overflows.
Obs[2]: O tamanho do crivo pode ser calculado exato e quase exato, dependendo do limite colocado.
Obs[3]: Quem puder testar e fazer "benchmark" com valores elevados e sistemas mínimos, máquinas virtuais etc. eu agradeceria.
#include <stdio.h> #include <math.h> typedef unsigned long long llint; int main (void) { const llint p = (llint) (pow (2.0, 23.0) -1.0); const llint q = 1009999; // (llint) (2.0 * ((double) p / log((double) p))); llint primes[q]; llint i=5, j=0, k=0, l=1, m=0; for (m=0; m<q; m++) primes[m]=1; primes[0]=2; primes[1]=3; do { j = 0; k= (llint) sqrt((double) i); while ((primes[++j]<k) && (i%primes[j])); if (primes[j]>k) primes[++l] = i; i+=((i%3==2)?2:4); } while (i<p && l<q); for (m=0; m<l; m++) printf ("%llu ",primes[m]); putc ('\n',stdout); return 0; }
Máximo Divisor Comum (algoritmo de Euclides)
Divisores de n no intervalo [a,b]
Ordenar vetor com algoritmo Insertion Sort
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba