MDC máximo divisor comum
Exercício de lógica de programação para descobrir o MDC (máximo divisor comum).
Exercício de lógica de programação
Faça um programa para calcular o MDC (máximo divisor comum) entre dois números.
Aconselho a utilizar o método de divisões sucessivas, pois você verá que a forma como costumamos resolver problemas matemáticos na mão nem sempre é o melhor caminho quando estamos codificando.
Linguagem C
#include <stdio.h>
#include <assert.h>
//
// Função mdc
//
int mdc(int num1, int num2) {
// Aqui entra a lógica do programa.
}
//
// Testes
//
int main() {
assert(3 == mdc(24, 9));
assert(10 == mdc(30, 20));
return 0;
}
Solução na linguagem C
#include <stdio.h>
#include <assert.h>
//
// Função mdc
//
int mdc(int num1, int num2) {
int resto;
do {
resto = num1 % num2;
num1 = num2;
num2 = resto;
} while (resto != 0);
return num1;
}
//
// Testes
//
int main() {
assert(3 == mdc(24, 9));
assert(10 == mdc(30, 20));
return 0;
}
Linguagem Python
Abaixo nosso código inicial escrito em Python, utilize ele para resolver o problema.
# -*- coding: utf-8 -*-
#
# Função que calcula o MDC entre dois números
#
def mdc(num1, num2):
pass
#
# Testes
#
assert 3 == mdc(24, 9)
assert 10 == mdc(30, 20)
Solução na linguagem Python
A única observação sobre a solução em Python é que não temos na linguagem o laço do-while. Então temos que mudar um pouco a solução.
# -*- coding: utf-8 -*-
#
# Função que calcula o MDC entre dois números
#
def mdc(num1, num2):
resto = None
while resto is not 0:
resto = num1 % num2
num1 = num2
num2 = resto
return num1
#
# Testes
#
assert 3 == mdc(24, 9)
assert 10 == mdc(30, 20)
Linguagem JavaScript (Node.js)
Abaixo nosso código inicial escrito em JavaScript (Node.js), utilize ele para resolver o problema.
var assert = require('assert');
//
// Função mdc
//
var mdc = function(num1, num2) {
}
//
// Testes
//
try {
assert.equal(3, mdc(24, 9));
assert.equal(10, mdc(30, 20));
} catch(e) {
console.log(e);
}
Solução na linguagem JavaScript (Node.js)
var assert = require('assert');
//
// Função mdc
//
var mdc = function(num1, num2) {
var resto;
do {
resto = num1 % num2;
num1 = num2;
num2 = resto;
} while (resto != 0);
return num1;
}
//
// Testes
//
try {
assert.equal(3, mdc(24, 9));
assert.equal(10, mdc(30, 20));
} catch(e) {
console.log(e);
}