Galera estou estudando e me surgiu uma duvida como pegar a soma dos divisores de R existentes entre 1 e S
Exemplo: Obtenha dois números randômicos R e S e imprima no console a soma dos divisores de
R existentes entre 1 e S.
Sendo:
1 <= R <= 10
1 <= S <= 1000
Boa tarde.
Qual o seu problema com o código?
Eu não tenho certeza mas eu acabei fazendo assim
Random random = new Random();
int r_rand = random.nextInt(10);
int s_rand = random.nextInt(100);
int soma = 0;
for(int s = 1; s<=s_rand;s++){
for(int r = 1;r<=r_rand;r++){
if(r % s == 0){
System.out.println(soma +=s);
}
}
}
está correto?
Dessa forma, S pode ser menor que R, o que não vai gerar nenhum divisor.
Isso é aceitável?
O tratamento para isso n acontecer eu fiz
só queria saber se a relação do for e soma tá certo
Do jeito que vc colocou, R ou S podem ter valor 0 o que não é permitido.
O jeito correto para achar os DIVISORES de R é assim:
Random random = new Random();
//obtem números aleatórios maiores que 0
int r = random.nextInt(9) + 1;
int s = random.nextInt(99) + 1;
int soma = 0;
for (int i = 1; i <= s; i++) {
// verifica se é divisor de R
float resto = r%i;
if(resto == 0) {
soma += i;
}
// se o contador for maior que R já não há mais DIVISORES possíveis e sai do loop
if (i > r) {
break;
}
}
System.out.println(soma);
}
1 curtida
Se gostou da resposta, de um like.
Se resolveu o seu problema, marque minha resposta como RESOLVIDO.
