Ir ao conteúdo
  • Cadastre-se

Problemas com lista e fatoração prima


chrislix

Posts recomendados

galera tenho o seguinte codigo :

#include <stdio.h>
#include<stdlib.h>
/* Recebe um número inteiro n > 0 e mostra sua decomposição em
fatores primos, calculando a multiplicidade de cada fator */
typedef struct lista{
    int fator;
    int interacao;
    struct no *prox;
}lista;

void inserirLista(lista * li, int x, int y){
    if(li == NULL)
        return ;;
    lista *no = (lista *)malloc(sizeof(lista));
    if(no == NULL)
        return ;
    else{
        no = li;
        while(no->prox!=NULL){
            no = no->prox;
        }
        lista *aux = (lista *) malloc(sizeof(lista));
        aux->fator = x;
        aux->interacao = y;
        aux->prox = NULL;
        no->prox = aux;
    }
}

void imprime(lista *li){
    lista *p;
    p = li;
    while (p->prox != NULL){
        printf("fator %d com multiplicidade %d\n", p->fator, p->interacao);

    }
}

main(void){
        lista *li = (lista *)malloc(sizeof(lista));
        li->prox = NULL;
       int n, p, q, primo, div;
       printf("Informe n: ");
       scanf("%d", &n);
       p = 2;
       while (n > 1) {
             q = ;
                while (n % p == ) {
                q = q + 1;
                        n = n / p;
             }
              if (q > )
                inserirLista(li, p, q);
              //printf("fator %d com multiplicidade %d\n", p, q);
              primo = ;
              while (! primo) {
                       p = p + 1;
                       div = 2;
                      primo = 1;
                  while (div <= p / 2 && primo) {
                       if (p % div == )
                            primo = ;
                       else
                            div = div + 1;
                 }
         }
     }
   imprime(li);
   return ;
}

 eu tenho que fazer uma fatoração prima, e depois inserir os valores em uma lista e imprimir em seguida, mas ele entra em um loop infinito sera q alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

Ajustei seu código. Haviam alguns erros pequenos de sintaxe e de lógica.

 

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

/* Recebe um número inteiro n > 0 e mostra sua decomposição em
fatores primos, calculando a multiplicidade de cada fator */
typedef struct lista
{
    int fator;
    int interacao;
    struct lista *prox;
} lista;

void inserirLista(lista **li, int x, int y)
{
    lista *aux = malloc(sizeof(lista));

    aux->fator = x;
    aux->interacao = y;
    aux->prox = NULL;

    while( *li != NULL )
            li = &(*li)->prox;

    *li = aux;
}

void imprime(lista *li)
{
    lista *p = li;

    while (p != NULL)
    {
        printf("fator %d com multiplicidade %d\n", p->fator, p->interacao);
        p = p->prox;
    }
}

int main(void)
{
    int n, p, q, primo, div;
    lista *li = NULL;

    printf("Informe n: ");
    scanf(" %d", &n);
    p = 2;

    while (n > 1)
    {
        q = 0;
        while (n % p == 0)
        {
            q++;
            n = n / p;
        }

        if (q > 0)
            inserirLista(&li, p, q);

        //printf("fator %d com multiplicidade %d\n", p, q);
        primo = 0;
        while (! primo)
        {
            p = p + 1;
            div = 2;
            primo = 1;

            while ( ( div <= (p / 2) ) && primo )
            {
                if (p % div == 0)
                    primo = 0;
                else
                    div = div + 1;
            }
        }
    }

    imprime(li);

    return 0;
}

 

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...