Создайте функцию, выражение или программу, которая выполняет следующие действия:
- Возьмите главные факторы любого числа и суммируйте их. Например, главные факторы 28 - 2 2 7, суммированные к 11.
- Умножьте результат на число простых факторов для данного числа. Например, 28 имеет 3 основных фактора, которые составляют 11. 11 * 3 - 33.
- Повторяйте процесс рекурсивно, сохраняя результирующий список (который начинается с исходного номера), пока не достигнете номера, который уже включен в список. Остановите без добавления этого последнего номера, чтобы в списке не было дубликатов. Прогрессия для 28 составляет 28 33, потому что 33 приводит к 28 снова.
- Подсчитайте элементы в результирующем списке. В случае 28 ответ 2.
Вот результаты для 0<n<=10
, так что вы можете проверить свой алгоритм.
2 1 1 10 1 11 1 9 5 10
(Как указал Бальфа, ответ на этот вопрос higley(1)
- 2 из списка 1 0. У меня изначально было 1, из-за ошибки в моем оригинальном алгоритме, написанном на J.)
Поскольку я тщеславный SOB и не нашел этого в OEIS , давайте назовем это «Последовательностью Хигли», по крайней мере, на время этого раунда гольф-кода. В качестве дополнительного бонуса, найдите первые два, n
имеющие самые низкие, higley(n)
где n
не простое и n>1
. (Я думаю, что есть только два, но я не могу доказать это.)
Это стандартный код игры в гольф, поэтому, как обычно, выигрывает наименьшее количество нажатий клавиш, но я прошу вас, пожалуйста, высказать умные ответы на других языках, даже если они многословны.
highley(1) == 1
? Один не имеет главных факторов, поэтому итоговый список в 4)[1, 0]
,highley(1) == 2
как я вижу.Ответы:
J,
4745Возможно, это было бы намного короче без использования
^:_
, но мой мозг уже достаточно прожарен.Изменить: (47-> 45) День двойного купона.
Применение:
источник
#@((~.@,((+/*#)@:q:)@{:)^:_)`2:@.(=&1)
38 символов.{
,{.
, и{:
все означают разные вещи, но{-
(к примеру), безусловно , последовательность из двух вещей,{
и-
.Golfscript,
68 67 6261 символЭто выражение: оно берет
n
стек и оставляет результат в стеке. Чтобы превратить его в программу, которая беретn
из stdin и печатает результат в stdout, замените ведущий[
на~
Суть его
[.2@{1$1$%{)}{\1$/1$}if}*;;]
(28 символов) занимает верхнее число в стеке и (по невероятно неэффективному алгоритму) генерирует список его основных факторов. Эквивалент псевдокода в стиле C:0+
Непосредственно перед{+}*
это обработать особый случайn==1
, потому что Golfscript не как складывание бинарной операции над пустым списком.Одна из непростых точек привязки - 27; Я нашел это, не используя программу, рассматривая сопоставление (p a
->
a 2 p), которое является фиксированной точкой, если a == p (a-1) / 2 , и пробует малоa
. (a==1
дает фиксированность простых чисел).Поиск с помощью программы приводит к появлению второй точки фиксации: 30 = (2 + 3 + 5) * 3
Приложение: доказательство того, что есть только две не простые фиксированные точки
Обозначение:
sopfr(x)
сумма простых множителейx
с повторением (A001414).Omega(x)
число простых факторовx
(A001222). Таким образом, функция преемника Хиглиh(x) = sopfr(x) Omega(x)
Предположим, у нас есть фиксированная точка,
N = h(N)
которая является продуктомn=Omega(N)
простых чисел.N = p_0 ... p_{n-1} = h(N) = n (p_0 + ... + p_{n-1})
Основная теория чисел:
n
делится наp_0 ... p_{n-1}
, поэтомуw=Omega(n)
эти простые числа являются главными факторамиn
. Wlog мы возьмем их, чтобы быть последнимw
. Таким образом, мы можем разделить обе стороныn
и получитьp_0 ... p_{n-w-1} = p_0 + ... + p_{n-1}
или
p_0 ... p_{n-w-1} = p_0 + ... + p_{n-w-1} + sopfr(n)
Учитывая , что все простые числа ,
p_0
чтобыp_{n-w-1}
больше 1, увеличение любого из них увеличивает на LHS больше , чем ОРЗ. Таким образом, для данногоn
мы можем перечислить все варианты решения.В частности, не может быть никаких решений, если LHS больше, чем RHS, устанавливая все «свободные» простые числа в 2. Т.е. не существует решений, если
2^{n-w} > 2 (n-w) + sopfr(n)
Поскольку
sopfr(n) <= n
(с равенством только для n = 4 или n простых), мы можем сделать более слабое утверждение, что нет фиксированных точек, если2^{n-w} > 3 n - 2 w
Держа
w
фиксированными, мы можем выбрать различные значенияn
удовлетворенияw=Omega(n)
. Наименьшее такоеn
есть2^w
. Обратите внимание, что если2^{n-w}
по крайней мере 3 (т.е. еслиn-w>1
, что верно, еслиn>2
), то увеличениеn
приw
сохранении постоянной увеличит LHS больше, чем RHS. Отметим также, что дляw>2
и принимая наименьшее возможноеn
неравенство выполняется, и нет никаких фиксированных точек.Это оставляет нам три случая:
w = 0
иn = 1
;w = 1
иn
простое; илиw = 2
иn
полуместно.Случай
w = 0
.n = 1
Как иN
любое простое.Случай
w = 1
. Еслиn = 2
тогдаN = 2p
и мы требуемp = p + 2
, который не имеет решений. Еслиn = 3
тогда у нас естьpq = p + q + 3
и два решения,(p=2, q=5)
и(p=3, q=3)
. Еслиn = 5
тогда2^4 > 3 * 5 - 2 * 1
, значит, дальнейших решений нетw = 1
.Случай
w = 2
. Еслиn = 4
тогдаN = 4pq
и мы требуемpq = p + q + 4
. Здесь есть целочисленное решениеp=2, q=6
, но нет простых решений. Еслиn = 6
тогда2^4 > 3 * 6 - 2 * 2
, значит, дальнейших решений нетw = 2
.Все случаи исчерпаны, поэтому единственными непростыми фиксированными точками являются 27 и 30.
источник
n
до того, как он будет подсчитан, существуют ли какие-либо не простые числаn
после 49, для которых указанная последовательность не заканчивается на 28?n
границы которой указаныhigley(n)
выше. (Это позволило бы значительно упростить цикл - просто повторятьf(n)
время, а затем отбрасывать дубликаты).Рубин, 92 символа
Это решение предполагает, что Higley (1) на самом деле равно 2, а не 1 (см. Комментарий Бальфы выше):
источник
Октава - 109 символов
источник
MATL , 19 байт
Попробуйте онлайн!
источник