Numeros Multiplos

3 respostas
M

Bom dia, alguem pode mim ajudar como resolver numeros multplos …

if(a == b){
                     j = a;
                  }else{
                     for (i=2;((a > 1) || (b > 1)); i++) {
                        while(((a % i) == 0) || ((b % i) == 0)){
                           if((a % i) == 0){
                                   a = a/i;

Alguem pode mim ajudar solucionar achar os multplos de 3 e 5

EDIT - Por favor, use os tags [ code ] para postar seu código.

3 Respostas

dm_thiago

Você quer achar os multiplos de 3 e 5 em qual intervalo? Fazer isso até infinito é meio complicado...

//considerando que você quer valores de pMinimo até pMaximo
public ArrayList<int> multiploTres(int pMinimo, int pMaximo)           
{
    ArrayList<Integer> tRetorno = new ArrayList<Integer>();
    for (int i = pMinimo, i < pMaximo, i++)
        if (i % 3 == 0)
            tRetorno.add(i);
    return tRetorno;
}

public ArrayList<int> multiploCinco(int pMinimo, int pMaximo)           
{
    ArrayList<Integer> tRetorno = new ArrayList<Integer>();
    for (int i = pMinimo, i < pMaximo, i++)
        if (i % 5 == 0)
            tRetorno.add(i);
    return tRetorno;
}

E outra, "mim ajudar" também é complicado, hein?!

robson_costa

no codigo acima no loop for tem q trocar a virgula por ponto-e-virgula.
e o tipo parametrizado nao aceita tipo primitivo entao no lugar de ArrayList deve ser ArrayList.

ViniGodoy

Você pode otimizar muito o seu programa de duas formas:

1. Tire o resto entre o mínimo e o número que vc deseja tirar o múltiplo. Esse valor representa o quão "à frente" do próximo múltiplo o mínimo está. Então, basta subtrair esse número do mínimo e somar à num para achar o primeiro múltiplo da série;

2. A partir daí, basta somar o próprio num para achar o próximo múltiplo.

Isso permite dividir o tempo de cálculo proporcionalmente ao número que vc irá calcular o numero (o tempo será (min-max divididos por num).

Observe:
public List<Integer> multiplo(int num, int min, int max)           
{
    //Busca do primeiro multiplo de num
    List<Integer> retorno = new ArrayList<Integer>();
    int valor = min - (min % num) + num;

     //Adicionamos o primeiro multiplo na lista
     if (valor <= max)
        retorno.add(valor);

     //Agora, basta somar num para achar o próximo multiplo
     valor += num;
     while (valor <= max) {
        retorno.add(valor);
        valor += num;
     }
            
    return retorno;
}

Uso:

System.out.println("Multiplos de 3: " + multiplo(3, 10, 10000));
System.out.println("Multiplos de 5:" + multiplo(5, 10, 10000));

Nesse método, o próprio min não está incluído no intervalo. Vc pode mudar o trecho inicial, caso queira incluí-lo. Basta usar o próprio valor quando o resto for 0.

Criado 11 de abril de 2008
Ultima resposta 12 de abr. de 2008
Respostas 3
Participantes 4