Encontrar os divisores de um número 'a' e colocar esse valores em um vetor

2 respostas
M

boa noite a todos
tenho certeza que é uma pergunta besta, mas não consigo encontrar de maneira alguma o erro no meu código

o código é esse:

//descobrindo quantos divisores 'a' possui para montar um vetor com esses divisores
    int aux = 0;
    for (int i=2; i<a; i++) {
       if (a%i==0) {
           ++aux;
        }
    }
    
    //montando vetor com os divisores de a
    int diva[] = new int[aux];
    int aux2=1;
    for (int i=0; i<aux; ++i) {
        ++aux2;
        if (a%aux2 == 0) {
            diva[i]=aux2;                
        }
    }

o código compila normalmente, mas quanto faço os testes atribuindo valores os valores não estão corretos
quando coloco por exemplo o valor de a sendo 20
o vetor que encontro é [2,0,4,5]
quando coloco 10 o vetor é [2,0]
quando coloco 40 é [2, 0, 4, 5, 0, 0]

desde já obrigado!

2 Respostas

robsonsm

mantendo esta lógica, acho que o segundo for poderia ser igual o primeiro e seria melhor colocar outra variaval para o indice do array, e ainda poderia tbm aproveitar o mesmo aux:

int a = 20;
		int aux = 0;
		for (int i = 2; i < a; i++) {
			if (a % i == 0) {
				++aux;
			}
		}
		int diva[] = new int[aux];
		int k = 0;
		aux = 1;
		for (int i = 2; i < a; i++) {
			++aux;
			if (a % aux == 0) {
				diva[k++] = aux;
			}
		}
M

obrigado
não havia pensado na possibilidade de uma nova variável para representar as posições do vetor

Criado 19 de setembro de 2010
Ultima resposta 19 de set. de 2010
Respostas 2
Participantes 2