Ir ao conteúdo
  • Cadastre-se

Programa para determinar números primos está com erro. como posso arrumar?


Posts recomendados

Pessoal, eu estava codando um programa para determinar numeros primos, e calcular os fatores de um numero. Para isso eu forneço um intervalo de 0, até um numero,  e meu programa fatora os numeros desse intervalo. Porém quando eu defini o intervalo de 0 a valores maiores que 200 ele omitia o fator 2, até mesmo para os valores menores que 100 que ele da certo se eu definir o intervalo de 0 a 100. Aqui esta o codigo:

 

 

 

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

#define MAX 100

 int main (void) {
  int z=, i=, x=, p=, k=1;
  int fatores [MAX];
  int primo [MAX];
  int j, varteste, resto;
   
    //Calculo de numeros primos
  
    for (i=; i<MAX; i++)
      primo = ;
    
    for (i=; i<MAX; i++){
      for (j=2; j<i; j++) {
     resto = i%j;                                             //Testando a divisibilidade do numero, dividindo por todos os
     varteste = resto * resto;                        //numeros anteriores a ele
     if (resto == )
       break;
    }
    if (varteste !=  && i != 1) {
       primo = i;
    }
    }
    
    //Fatorando os numeros do intervalo 0<x<MAX    
    
     for (x=1; x<MAX; x++){
       k=x;
       for (p=; p<MAX; p++){
     fatores [p] = ;
       }
       for (i=, p=; i<MAX; i++){
     if (primo !=  && primo != 1) {
     do {
     z = k % primo ;
     if (z==){                                       //Testando a divisibilidade por todos o numeros primos 
       fatores [p] = primo ;                 //contido no vetor primo, caso z=0, o numero é alocado 
       p++;                                           //no vetor fatores
       k = k/primo; 
      }
     } while (z==);
     }
       }
     printf ("A fatoraçao de %d é: 1 ", x);    //Saida, print dos valores do vetor fatores
     for (p=; p<MAX; p++)
        if(fatores [p] != )
          printf (", %d ", fatores [p]);
        printf ("\n");
       
     }
     
     printf ("\n");

      return ;
}
 

 

Link para o comentário
Compartilhar em outros sites

Pode simplificar todas essas rotinas, por apenas esta:


   

 int primo = ;
    int fatores[MAX] = {};
    int contFator = ;
    int tmpContFator = ;
    int resto = ;

    /* Fator inicial */
    fatores[contFator++] = 2;

    /* Inicio da rotina com valor posterior ao fator inicial (2) */
    for ( primo = 3; primo < MAX; primo++ )
    {
        for (tmpContFator = ; tmpContFator < contFator; tmpContFator++)
        {
            resto = primo % fatores[tmpContFator]; /* Testando a divisibilidade do numero por todos os demais contidos no vetor */
            if ( resto ==  )
                break;
            else
                if ( tmpContFator == (contFator - 1) ) /* Se estiver na ultima posicao do vetor, insere o numero primo no final do vetor */
                    fatores[contFator++] = primo;
        }
    }

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!