Ir ao conteúdo
  • Cadastre-se

fatoração em c


Posts recomendados

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?

Link para o comentário
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}.

 

Link para o comentário
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.

Link para o comentário
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;
}

 

_____________________________

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