Autor Tópico: Programa em C  (Lida 13477 vezes)

Offline Rhyu

  • Usuário Ubuntu
  • *
  • Mensagens: 95
    • Ver perfil
Re: Programa em C
« Resposta #15 Online: 06 de Janeiro de 2013, 22:06 »
Então a ideia era ler o numero n ai ele testava n pra ver se ele tem mais de 2 divisores, caso ele tivesse ele incrementava n e testava dinovo, e assim sucessivamente ate encontrar o primeiro primo.


E que eu usei outro metodo pra verificar se e primo, nesse que voce sugere no caso ele começando em 2 e indo ate n-1 caso ele tenha algum divisor ele já nao e primo automaticamente ne?
« Última modificação: 06 de Janeiro de 2013, 23:23 por Rhyu »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Programa em C
« Resposta #16 Online: 06 de Janeiro de 2013, 22:19 »
Isso mesmo. Pra encontrar erros é bom usar um depurador (gdb, por exemplo), mas pode ser um pouco demais, dependendo de até onde você pretende/precisa ir. Dá pra fazer "no papel" também (desse você não deve escapar), chamado de teste de mesa.

Offline Rhyu

  • Usuário Ubuntu
  • *
  • Mensagens: 95
    • Ver perfil
Re: Programa em C
« Resposta #17 Online: 06 de Janeiro de 2013, 23:36 »
Bom primeiramente queria agracer a ajuda do irtigor para que eu conseguisse resolver o problema , segundo queria destacar que fiquei contente que mesmo com dicas consegui aprender bastante coisa.

Código: [Selecionar]
#include <stdio.h>

main ()

{
  int n;
  int i;
  int j;
  int divisor;

  scanf ("%d",&n); //Le o numero n

   for (i = n ; i < 10000 ; i++)  //incrementa i ate achar o primeiro primo
   {
    divisor = 0;
    for (j = 2 ; j < i ; j++)  //testar se e primo
    {
      if (i % j == 0)
        divisor++;
    }
      if (divisor ==0) //se for primo para
        break;

   }
     printf ("Primo maior %d\n",i);  //imprimi o primo maior


     for (i = n ; i < 10000 ; i--) //decrementa i ate achar o primeiro primo menor
     {
      divisor = 0;
      for (j = 2 ; j < i ; j++)  //testar se e primo
      {
        if (i % j == 0)
          divisor++;
      }
       if (divisor == 0) //se for primo para
        break;
     }
     printf ("Primo menor %d\n",i);  //imprimi o menor primo
}

Acho que algo que ajudou bastante também foi ler logica de programação.
Abraço.

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Programa em C
« Resposta #18 Online: 07 de Janeiro de 2013, 00:51 »
Duas coisas:

- Pra achar o maior primo que é menor ou igual a n, a condição de parada ideal é i>1 (ou i >=2), porque o numero dois é o menor numero inteiro não negativo também primo (e você tá indo em direção à ele, e não deve passar).

- Nesse problema, você pode quebrar o laço [que verifica se é primo] assim que encontrar o primeiro divisor. Só pra otimizar.