Simples gerador de números primos
Publicado por Perfil removido (última atualização em 28/03/2018)
[ Hits: 4.061 ]
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; }
Exceções em C através de try-throw-catch
Os cincos primeiros termos da séries de fourier
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (1)
VMs e Interfaces de Rede desapareceram (13)
Como abrir o pycharm no linux [RESOLVIDO] (4)