Распечатайте список, в порядке возрастания и без дубликатов, натуральных чисел, у которых нет простого множителя, кроме 2, 3 или 5
Это вопрос программирования моей домашней работы для одного из моих курсов. Я не программировал пару лет, и я не был таким уж замечательным с самого начала. Сейчас я прохожу учебные курсы, чтобы вернуться к скорости, но это займет некоторое время. Если вы, ребята, можете помочь мне с этой проблемой, я был бы очень признателен.
Ограничения:
Каждый член этой последовательности является положительным целым числом вида 2^i*3^j*5^k
, для всех неотрицательных целых чисел i, j, and k
сi + j + k >= 1.
Не могу использовать массивы. Алгоритм решения этой проблемы должен предусматривать повторное создание и объединение списков. конкретно 5 lists; a final list, temp list, and three term lists
,
"Окончательный список увеличивается путем слияния с текущим временным списком. Временной список, в свою очередь, заменяется слиянием трех списков терминов. Новые списки терминов создаются путем умножения нового временного списка на 2, 3, and 5 respectively
"
Желаемая последовательность будет выглядеть следующим образом: 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, . . .
1 ответ
Как вы объяснили в своем вопросе, вы можете сделать свой алгоритм рекурсивно.
На шаге n:
Финальный список будет представлять набор F(n) = {m | m = 2^i*3^j*5^k, 1<=i+j+k<=n}
Временной список будет представлять набор T(n) = {m | m = 2^i*3^j*5^k, i+j+k=n}
Тогда список терминов "L2" будет L2(n) = 2*T(n-1)
список терминов "L3" будет L3(n) = 3*T(n-1)
список терминов "L5" будет L5(n) = 5*T(n-1)
Чтобы получить Т, T(n) = merge(L2(n), L3(n), L5(n))
Чтобы получить F, F(n) = merge(F(n-1), T(n))
Получив это, вы должны реализовать функцию объединения двух списков. В основной функции вам просто нужно перевести их на Java.
Вы также можете сделать списки всегда отсортированными, чтобы объединение было простым и эффективным! В Java, я думаю, вы можете использовать LinkedList или ArrayList, оба работают нормально.
В конце концов, это твоя домашняя работа.