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: 1.973 ]

Homepage: wantuil.com

Download 5223.primos.c




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.

  



Esconder código-fonte

/*
   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;
}

Scripts recomendados

Multipla escolha

Cálculo de Fatorial usando Loop

Comando switch

Agenda eletronica com banco de dados em arquivo texto

Temperatura


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts