Caros amigos,
Tenho que desenvolver um programa que calcule o MMC e MDC de dois valores. Será que alguém poderia dar uma força?
Fico muito grato pela atenção.
Rafael F. F.
Caros amigos,
Tenho que desenvolver um programa que calcule o MMC e MDC de dois valores. Será que alguém poderia dar uma força?
Fico muito grato pela atenção.
Rafael F. F.
Qual a sua dificuldade, especificamente?
Dica: sabendo calcular o MDC, o MMC é direto.
Para calcular o MDC, implemente o algoritmo de Euclides. (Dica: faça primeiro na mão, então use sua cabeça para escrever o algoritmo…)
Para o MMC, se os números forem x e y, então
MMC = X * Y / MDC
Valeu thingol,
Eu consegui olha á codificação para achar o MDC, pode estar meio Luso ainda. Mas até trato os casos dos dois números serem primos.
public static int mdc (int y, int x){
int h, l, r = 0;
boolean caso;
caso = isPrimo(y);
if (caso){
caso = isPrimo(x);
if (caso) return 1;
}
caso = false;
h=Math.max(y, x);
l=Math.min(y, x);
while(true){
r += h;
if ((r % l) == 0){
return r;
}
}
}
Ai para achar o MMC fiz como você me disse.
public static int mmc (int y, int x){
int r;
r= (y * x)/ mdc(y, x);
return r;
}
Valeu mesmo pela força...
Pergunta - como é que você codificou o “isPrimo”? Usando o crivo de Erastótenes? Só para saber.
Tinha um negócio errado no outro código, eu inverti uma coisa. Mas agora está certo. Eu não sei sobre o crivo de Erastótenes, vou postar a codificação do isPrimo também.
public static int mdc (int y, int x){
int r;
boolean caso;
caso = isPrimo(y);
if (caso){
caso = isPrimo(x);
if (caso) return 1;
}
r= (y * x)/ mmc(y, x);
return r;
}
public static int mmc (int y, int x){
int h, l, r = 0;
h=Math.max(y, x);
l=Math.min(y, x);
while(true){
r += h;
if ((r % l) == 0){
return r;
}
}
}
public static boolean isPrimo(int y){
if((y==2)||(y==3))
return true;
if(y==5)
return true;
if (((y%2) != 0) && ((y%3) != 0))
if ((y%5) != 0)
return true;
return false;
}
Ainda deve estar meio luso... Mas pelo menos agora está funcionando. hehe
Valeu pela ajuda galera.
Rafael F. F.
Credo, esse “isPrimo” está totalmente errado. O que ocorre quando você passa o número 1517 (que é 37 * 41) ?
Dica: se você usar o algoritmo de Euclides, como foi mencionado, não é preciso saber se o número é primo ou não. Não precisaria de ficar checando isso. Não fiquei vendo o seu algoritmo, mas não parece ser Euclides.
thingol,
Tudo bem, tudo bem, o programa está meio Luso… Mas não está errado se eu passar os números 37, 41 ele produz o resultado certo.
E eu não vi onde está errado o meu método isPrimo, pelo menos todos os números que eu testei ele me retornou o resultado certo… Em que caso ele retorna o resultado errado?
Rafael.
Aham, seu código só checa se o número é divisível por 2, 3 ou 5. Se não for divisível por nenhum deles (como é o caso dos primos), resulta true.
Só que ele retorna true para números divisíveis por 7, 11 etc. O menor número para o qual ele retorna uma resposta errada é 77 (que é 7 * 11). Você sabe que 77 nunca foi primo…
thingol,
Valeu, agora é só colocar mais uns dois if acho que arruma… Se você puder me passar a codificação para o método isPrimo a prova da falhas eu fico muito grato… Valeu mesmo pela ajuda.
Eu sou novo ainda, um dia eu aprendo.
hahah
Falow
RAfael F. Fernandes
Só uma perguntinha, o crivo de Erastótenes é a melhor maneira para se encontrar um número primo?
Rafaelf
Aham, existem uns métodos bastante complicados para isso (que são usados em criptografia e certificação digital), mas para o uso do dia a dia (para primos relativamente pequenos) o crivo é suficiente.
Mas como eu disse, para implementar o algoritmo de Euclides, não é preciso saber se o número é primo.
tinngol,
Eu vou pesquisar sobre o algoritmo de Euclides, valeu pela ajuda com os números primos.
Rafael
tipo, uma maneira de verificar se um numero é primo, mas isso demanda um tempo proporcional ao tamanho do numero é verificar se esse numero é divisivel por todos os numeros menores que sua raiz quadrada… corrijam-me se eu estiver errado
Oi!! Sou a tati!!
Vi q tu ajudou outra pessoa com esses exercicios charopes de logica, estou com um grande problema, preciso fazer um fluxograma q leia do teclado um numero N , calcular e imprimir o fatorial do N .Encerrar quando digita N negativo.
N~ precisa ser a resposta apenas uma ajuda!!!
Valeu!!!
ok, qual é a sua dúvida?