Ir ao conteúdo
  • Cadastre-se
Matheus Perusso

fatoração em c

Recommended Posts

Ola, estou tentando fazer o seguinte exercicio :

Faça um programa em linguagem C que receba dois números. O primeiro é um número

inteiro positivo que será fatorado. O segundo é outro inteiro positivo que diz quantos

números DIFERENTES que o usuário acha que serão precisos para fatorar o primeiro

número. O programa, ao final, diz se a suposição do usuário estava correta ou não (ele

não mostra a fatoração).Exemplo:

Entrada: 30 e 3.Saída: suposição correta. (Fatoração de 30 = 2*3*5)

Entrada: 18 e 2.Saída: suposição correta. (Fatoração de 18= 2*3*3)

 

Como eu faço para descobrir que é necessaria a multiplicação de 3 números para formar o número 3?

Compartilhar este post


Link para o post
Compartilhar em outros sites
30 minutos atrás, Matheus Perusso disse:

Como eu faço para descobrir que é necessaria a multiplicação de 3 números para formar o número 3?

  • Divisão sucessiva por números primos; Sempre que o número for divisível inteiro pelo primo o contador é incrementado e o novo valor de número é o razão de número primo atual. Quando não divisível o primo assume o valor do próximo primo na sequência até um divisível ser encontrado.

Para facilitar o código, podemos assumir a variável primo que seja um vetor dos primos mais usuais: {2, 3, 5, 7, 11, 13, 17}.

 

Editado por Mauro Britivaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu armazenei os valores no vetor, só tenho um problema, no caso do 18, no qual o 3 se repete, só aparece o 3 uma vez, segue a estrutura que eu utilizei(só a parte da verificação):

for(pv=0;pv<=6;pv++){
     if(num%vet[pv]==0){
     printf("%d", vet[pv]);
     printf("\n");
   }

 

Já consegui, botei outro for por fora, coloquei ele pra rodar duas vezes e coloquei dentro do if, para o numero ser igual a divisão dele mesmo pelo número primo no vetor.

Editado por Matheus Perusso

Compartilhar este post


Link para o post
Compartilhar em outros sites

O contador a que me refiro é o contador de fatores, por exemplo: 

E.I.:  fatoração(18): 2*3*3. Logo possui 18 3 fatores primos.

Nas circunstâncias do exemplo a variável contador é : 3.

 

Observe que no primeiro instante o número 2 é divisor inteiro, depois não é mais

porque

iniciou:

numero = 18 / 2: 9

numero = 9 / 2: 4.5, neste instante incrementa o vet[pv++]

numero = 9 / 3: 3

numero=  3 / 3: 1,    neste instante finaliza o loop.

finalizou.

Spoiler

int fatores(int num)
{
    int fat[6] = {2, 3, 5, 7, 11, 17};
    int f = 0, cont = 0;

    while(num != 1)
    {
        if((num%fat[f]) == 0)
        {
            num /= fat[f];
            cont++;
        }else
            f++;
    }
    return cont;
}

 

_____________________________

Editado por Mauro Britivaldo
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×