Como fazer o mdc

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++;
}
}
}
}

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

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

Cara, pesquise pelo algoritmo de Euclides.

Abraços.

Vou pesquisar

abraço

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…

[quote=Tchello] Cara, pesquise pelo algoritmo de Euclides.

Abraços.[/quote]

Era isso que eu ia falar :smiley:

beleza cara

valeu pela ajuda :smiley: