Ir para conteúdo
Fórum Script Brasil
  • 0

Números primos em C


cicero.sistemas

Pergunta

Alô pessoal, estou com um probleminha fiz um programa em C que mostre os numeros primos de entre 1 e 100. Porém ele retorna todos os numeros de 1 a 50. Segue o código abaixo:

#include <stdio.h>
#include <stdlib.h>

int main()
{ 
int indice;

for (indice = 1; indice <= 100; indice++ )
{ 


  float quociente; 
  quociente = indice / 2; 

  if ( quociente * 2 == indice ) 

    printf ( "\n%f O numero não e primo!",quociente  ); 
  } 
  system("PAUSE");    
  return 0;
}

desde já agradeço.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Ahn? indice / 2 * 2 == indice.

Veja o algoritmo Sieve of Eratosthenes.

Abraços.

eu não estou dividindo o indice por dois e depois comparando com ele mesmo. eu estou dividindo o indice por dois e depois atribuindo esse valor a quociente:

float quociente;

quociente = indice / 2;

if ( quociente * 2 == indice )

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz não entendi nada dessa lógica: pegar a metade de um número e ver se o dobro dele vai se igual ao número? Essa condição vai ser sempre verdadeira. O seu programa tá retornando até 50 porque o quociente recebe a metade do indice.

Descobrir se um número é primo ou não é um problema computacional até hoje sem solução rápida. Se esse teste seu desse certo você ia ganhar muito dinheiro.

Tem vários métodos de implementação, procura no Google.

Editado por RonaldoRG
Link para o comentário
Compartilhar em outros sites

  • 0

Uma maneira de se fazer:

Primeiro você cria todos os números a serem testados.

Percorre todos os números restantes, o primeiro sempre será primo, depois disso você tira todos os multiplos desse número.

Continue fazendo isso até o fim dos números.

Ex: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

Começe do 2 é claro.

2 é primo, agora tire todos os multiplos de 2: ( 3, 5, 7, 9, 11, 13, 15, 17, 19 ); próximo passo (3):

3 é primo, agora tire todos os multiplos de 3: ( 5, 7, 11, 13, 17, 19 ); próximo passo (5):

5 é primo, agora tire toods os multiplos de 5: ( 7, 11 , 13 , 17, 19 ); próximo passo (7):

7 é primo, agora tire toods os multiplos de 7: ( 11 , 13 , 17, 19 ); próximo passo (11):

11 é primo, agora tire toods os multiplos de 11: ( 13 , 17, 19 ); próximo passo (13):

13 é primo, agora tire toods os multiplos de 13: ( 17, 19 ); próximo passo (17):

17 é primo, agora tire toods os multiplos de 17: ( 19 ); próximo passo (19):

17 é primo, agora tire toods os multiplos de 19: (): FIM

Link para o comentário
Compartilhar em outros sites

  • 0

outra forma de se fazer:

[red]N[/red] é um numero que será avaliado se é ou não primo. [red]X[/red] é um numero que varia de 1 até N, o qual testaremos a divisao N/X. Teremos uma 3º variavel chamada [red]cont[/red] (que iniciará valendo 0).

enquanto X<=N, se o resto da divisao N/X for 0, soma-se um no contador (cont++).

Se cont==2, então o numero é primo (apenas as divisoes x=1 e x=n dão resto 0).

em codigos rapidos aew

#include <stdio.h>

int main() {
    int n=0, d=1, cont=0;
    printf("Os numeros são: ");
    while (n<=100) {
        while(d<=n) {
            if(n%d==0)
                cont++;
            d++;
        }
    if (cont==2)
    printf("%d, ", n);
    n++; d=1; cont=0;
    }
    return 0;
}

abraço

Editado por estudante01
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...