Java 8.
У меня есть следующий код:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
while(!(1<=a && a<=b && b<=Math.pow(10, 6) && b-a<=3000)){
System.out.println("Вы ввели неккоректное значение");
a = in.nextInt();
b = in.nextInt();
}
int[] masOfNumbers = new int[b-a+1];
int[] masOfResults = new int[b-a+1];
List<Integer> dividers = new ArrayList<Integer>();
for(int i=a; i<=b; i++){
masOfNumbers[i-a]=i;
if(masOfNumbers[i-1]%i==0){
dividers.add(masOfNumbers[i-1]/i);
masOfResults[i-1]=dividers.size();
}
}
OptionalInt max = Arrays.stream(masOfResults).max();
int result = Arrays.asList(masOfResults).indexOf(max)+1;
System.out.println(result);
}
}
В чем ее суть: на ввод идет 2 числа, первое меньше второго, программе нужно найти от первого до второго числа такое, чтобы у него было наибольшее количество делителей. Она должна выводить это число. Но у меня она почему-то выводит всегда 0. Что я делаю не так?
В цикле while я задаю рамки значений a и b.