Crivo de Eratóstenes Simples em C
Publicado por Perfil removido (última atualização em 14/05/2012)
[ Hits: 10.635 ]
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;
}
janelinha para executar comandos com system(), C/GTK
Script de caixa eletrônico em C
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Instalação Completa e Configuração Básica do Void Linux
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Tenha opção de emblemas embutido no pcmanfm
Instalar o Microsoft Teams no Ubuntu e Derivados
Erro ao instalar o linux-headers (2)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (4)









