Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Среднее  арифметическое  модулей  разностей всех  элементов  массива

#массивы #java


Доброго времени суток.
Задача стояла такая: вводя 2 целых числа, нужно было найти все простые числа между
ними. С этим быстро справился, но вторая часть задания добавляет условие: сгенерировать
массив из простых чисел, найденных ранее, при условии, что среднее  арифметическое 
модулей  разностей всех  элементов массива наиболее близка к целому числу P > 1 типа int.
Число Р также вводится вместе с границами диапазона. Разности считаются так: если массив,
например, 7 2 2 5, то среднее арифметическое будет вычисляться так ср_арф = (|7-2|+|7-2|+|7-5|+|2-2|+|2-5|+|2-5|)/6.
  Сломал весь мозг, но дальше прямого перебора не придумал ничего, вот что я наваял
(осторожно говнокод):
rezArrList.add(intArrList.get(rand.nextInt(intArrList.size())));
    counter++;
    while (result >= p+1 || result <= p-1 || result != p){
        rezArrList.add(intArrList.get(rand.nextInt(intArrList.size())));
        counter++;
        for (int i = 0; i < rezArrList.size()-1; i++){
            for (int j = 1; j < rezArrList.size(); j++){
                preresult += Math.abs(rezArrList.get(i)-rezArrList.get(j));
            }
        }
        result = preresult/counter;
    }

Это срабатывает, но крайне редко, если повезет. Сейчас пытаюсь вывести формулу, но
пока что-то не очень выходит.     


Ответы

Ответ 1



Отсортируйте массив простых чисел от большего к меньшему. так например 7 2 2 5 -> 7 5 2 2 Далее отнимайте от семи 5, 2, 2 От 5 отнимайте 2, 2 и т.д. Количество прохождения цикла сократится вдвое. Напишите, если нужен код.

Комментариев нет:

Отправить комментарий