Como fazer o mdc

7 respostas
Douglas_Magno

ai esta o codigo eu tentei mais não esta dando certo

public class Mdc
{

public Mdc(){
}

int [ ] a = new int[5];
int [ ] b = new int[5];
int [ ] u = new int[5];
public  void mdc(int n, int n1){

for(int i = 1; i < a.length;i++){

if(n % i == 1){

a[i] = i;

i++;

}

}

for(int i = 1; i < b.length; i++){

if(n1 % i == 1){

b[i] = i;

i++;

}

}

for(int i = 1; i < u.length; i++){

if(a[i] == b[i]){

u[i] = b[i];

u[i] *= u[i];

i++;

}

}

}

}

7 Respostas

Gustavokt

Não entendi a sua lógica dos for… o que cada um deveria fazer?

Douglas_Magno

Primeiro for para gurdar os numeros que dividem n1
Primeiro for para gurdar os numeros que dividem n2

e o terceiro para a intersecção de n1 e n2 ai multiplica esse numeros e acha o mdc

mais não ta funcionando a logica

Tchello

Cara, pesquise pelo algoritmo de Euclides.

Abraços.

Douglas_Magno

Vou pesquisar

abraço

Gustavokt

Se for para guardar os que dividem o número, o correto seria

if(n % i == 0)

Se você colocar
if(n % i == 1)
você vai estar guardando os divisores de resto 1.

Outros problemas no seu código:

  1. Sua lista tem tamanho 5, o que vai restringir divisores até 5.

  2. Você fez um i++ quando supostamente deveria ter encontrado um divisor. Isso tem algum motivo?

  3. No ultimo laço, você vai estar com 0 nas posições do array (pois sua inicialização é a padrão), e no final vai dar 0.

  4. Essa lógica funciona para números que são primos entre si (3 e 2 por exemplo). Para 2 e 4 acho que não vai funcionar…

Gustavokt

Tchello:
Cara, pesquise pelo algoritmo de Euclides.

Abraços.

Era isso que eu ia falar :smiley:

Douglas_Magno

beleza cara

valeu pela ajuda :smiley:

Criado 1 de setembro de 2010
Ultima resposta 1 de set. de 2010
Respostas 7
Participantes 3