Simples gerador de números primos
Publicado por Perfil removido (última atualização em 28/03/2018)
[ Hits: 4.008 ]
Um código simples, com algorítimo não otimizado, para gerar números primos em "ranges" passados como parâmetros. O "output" é organizado em colunas, usando o caractere '\t' como separador e quebrando a linha quando atingido 80 colunas.
Exemplo de uso (considerando o nome do binário como "a.out"):
$ ./a.out 1 100
/* This is free and unencumbered software released into the public domain. */ #include <sys/types.h> #include <err.h> #include <errno.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #define COLUMNS 80 #define SAFEZON 8 #ifndef __progname extern char *__progname; #endif #ifndef getprogname #define getprogname( ) __progname #endif #ifndef setprogname #define setprogname(x) __progname = x #endif static int numlen(ssize_t num) { ssize_t res; for (res = 0; num; res++) num /= 10; return res; } static ssize_t strtobase(const char *str, ssize_t min, ssize_t max, int base) { ssize_t res; char *end; errno = 0; res = strtoll(str, &end, base); if (end == str || *end != '\0') errno = EINVAL; if (res > max || res < min) errno = ERANGE; if (errno) err(1, "strtobase %s", str); return res; } static void usage(void) { fprintf(stderr, "usage: %s from to\n", getprogname()); exit(1); } int main(int argc, char *argv[]) { ssize_t i, from, to; int chrp, ndiv; setprogname(argv[0]); argc--, argv++; if (argc < 2) usage(); from = strtobase(argv[0], 1, SSIZE_MAX, 10); to = strtobase(argv[1], 1, SSIZE_MAX, 10); chrp = 1; for (; from < to; from++) { i = 1; ndiv = 0; for (; i < from; i++) { if (!(from % i) && (i != 1 && i != from)) { ndiv++; break; } } if (ndiv) continue; if ((chrp += numlen(from) + SAFEZON) > COLUMNS) { putchar('\n'); chrp = 1; } printf("%zd", from); if ((from + 1) < to) putchar('\t'); } putchar('\n'); return 0; }
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (2)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta