Exibi os números primos de um numero recebido pelo usuário, sem estrutura de repetição
Publicado por Edmar Wantuil (última atualização em 22/11/2011)
[ Hits: 2.209 ]
Homepage: wantuil.com
Escrevi esse código para testar os números primos <= de um numero recebido pelo usuário.
Economizado o máximo de processos possíveis e sem utilizar estrutura de repetição apenas recursividade.
/*
Feito por Edmar Wantuil Silva Júnior
Em 14 de novembro de 2011
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//Função testa se é primo ele testa até encrontar um divisor o achando ele para o teste, pois já saberemos que ele é primo
int testa_primo(int numero, int divisor)
{
//Ira testar somente até a metade do numero pois sabemos que após a metade do nuemro so existe o proprio numero como divisor
if((numero / 2) < divisor)
return 0;
//Se achar qualquer divisor o teste irá parar pois o numero não é mais primo
if(numero % divisor == 0)
return 1;
else
return testa_primo(numero,divisor + 1);
}
//Essa função chama a função testa primo e retorna true caso primo
bool primo(numero)
{
//vamos passar o numero 2 como o primeiro divisor pois sabemos que todos os numeros são divisiveis assim se retornar 0 ele sera primo
if(testa_primo(numero,2) == 0)
return true;
else
return false;
}
//Essa função chama ela mesma até numero = cont
void primos(int numero, int cont)
{
if(primo(cont) == true)
printf("%d\n", cont);
if(numero > cont)
primos(numero, cont + 1);
return;
}
//Função principal
int main()
{
int numero= 0;
printf("Numero: ");
scanf("%d",&numero);
primos(numero, 1);
primo(numero);
return 0;
}
Jogo da Velha contra o Computador.
Nenhum comentário foi encontrado.
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
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









