Simples gerador de números primos
Publicado por Perfil removido (última atualização em 28/03/2018)
[ Hits: 4.336 ]
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;
}
simples gerador de numeros primos
Simulador do Sorteio da Mega Sena
Angelinux Scripts - Palpite para Megasena em C
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









