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
Tchello
#4
Cara, pesquise pelo algoritmo de Euclides.
Abraços.
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:
-
Sua lista tem tamanho 5, o que vai restringir divisores até 5.
-
Você fez um i++ quando supostamente deveria ter encontrado um divisor. Isso tem algum motivo?
-
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.
-
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: :smiley:](https://www.guj.com.br/images/emoji/twitter/smiley.png?v=9)