Informática, perguntado por jessykabertoldi369, 1 ano atrás

calcular o MDC e MMC de dois números inteiro maior que 2 e menor que 1000000 Seguir Ler os dois números inteiros. Criticar a validade dos números que devem satisfazer o intervalo proposto Se não satisfizer o intervalo exibir mensagem Erro de Dados. Se satisfizer, exibir mensagem MDC = resposta; MMC = resposta em linguagem c++

Soluções para a tarefa

Respondido por bokomoko
0
Primeiro, vamos lembrar que o MMC entre dois números é igual ao produto dos dois números dividido pelo MDC.

Portanto, se calcularmos o MDC entre dois números, facilmente calculamos o MMC.

O MDC pode ser calculado pelo algoritmo de subtração sucessiva do maior pelo menor.  Quando a última iteração der 0, o MDC será o resultado da etapa anterior. Se a última iteração de 1, os números são primos entre si.

Por exemplo, qual o MDC entre 12 e 16 ? 
subtraimos o menor do maior
16-12 = 4
Pegamos os 2 menores 12 e 4 e subtraimos de novo
12-4 = 8
pegamos os 2 menores 8 e 4 
8-4 = 4
e então os 2 menores agora são iguais, este é o MDC

Agora imagine o MDC entre 63 e 18 ... 
63 - 18 = 45
45 - 18 = 27
27 - 18 = 9
18 - 9 = 9
O MDC é 9

Agora imagine 42 e 11
42-11 = 31
31-11 = 20
20-11 = 9
11-9 = 2
9-2=7
7-2=5
5-2=3
3-2=1
Opa, esses números são primos entre si

Podemos inclusive usar recursividade aí, que fica bem interessante

Bom, agora vamos implementar o algoritmo em c++

#include <iostream> 
#include <string>
using namespace std; 
int obtemvalor( string mensagem) {
  int aux;
  do {
     cout << mensagem << "\n";
     cin >> aux ;
  } while ( aux <=2 || aux > 1000000 );
  return (aux);
};

int mdc( int valor1 , int valor2 ){
  int aux;
  int pequeno;
  int grande;
  if (valor1 > valor2){
      pequeno = valor2;
      grande = valor1;
  }
  else {
     pequeno = valor1;
     grande = valor2;
  };
  if (pequeno ==0 ){
     aux = grande;
  }
  else{
    aux = mdc( pequeno, grande-pequeno);
   }; 
  return (aux);
}
int main(){
  int um_numero;
  int outro_numero;
  int resultado;
  int mmc;
  um_numero = obtemvalor("Informe o primeiro número" );
  outro_numero = obtemvalor("Informe o segundo número");
  resultado = mdc(um_numero,outro_numero);
  mmc = um_numero * outro_numero / resultado;
  cout << "Números informados : " << um_numero << " e " << outro_numero << "\n";
  cout << "MDC = " << resultado << "\n";
  cout << "MMC = " << mmc << "\n";
}

Pode ver e rodar o programa aqui
https://repl.it/@bokomoko/MDC-e-MMC
Perguntas interessantes