Вступление
Последовательность ЭКГ начинается с 1 и 2, затем правило состоит в том, что следующий член является наименьшим положительным целым числом, которого еще нет в последовательности, и общий множитель которого с последним членом больше 1 (они не взаимно просты).
Первые термины:
1, 2, 4, 6, 3, 9, 12, 8, 10, 5, 15, ...
Он называется ЭКГ, потому что график его терминов очень похож на ЭКГ.
Это последовательность A064413 в OEIS .
Вызов
Вы должны написать функцию, которая принимает целое число n в качестве входных данных и выводит, сколько из n первых членов последовательности больше, чем n .
Так как правило последовательности начинается с третьего члена, входное целое число должно быть больше или равно 3. Например, при заданном входном значении 10
выход является 1
тем, что 7-й член является12
значении и ни один из других первых десяти членов не превышает 10.
Контрольные примеры
3 -> 1
10 -> 1
100 -> 9
1000 -> 70
правила
- Для целых чисел, меньших 3, функция может выводить 0 или код ошибки.
- Никаких других особых правил, кроме: это код гольф, чем короче, тем лучше!
1
будучи 0-м членом последовательности и, следовательно, делая, например,15
10-й член, а не5
?Ответы:
Желе ,
201918 байтЭто полная программа.
Попробуйте онлайн!
Как это устроено
Обратите внимание, что сгенерированная последовательность[1,0,2,4,6,3,9,12,8,10,5,15,…] . Поскольку вызов вспомогательной ссылки n раз генерирует последовательность длиной n+1 , значение 0 практически игнорируется.
источник
Perl 6 ,
66635958 байт-4 байта благодаря Джо Кингу
Попробуйте онлайн!
Слишком медленно на TIO для n = 1000.
источник
first &f,1..*
это можно переписать+(1...&f)
, твой переходный трюк все- таки помог.JavaScript (ES6),
107106105 байтовПопробуйте онлайн!
Как?
a.indexOf(k)
равно либо:a.indexOf(k) + C(k, a[0])
источник
Haskell,
8982 байтаРедактировать: -7 байт благодаря @ H.PWiz
Попробуйте онлайн!
источник
Шелуха , 16 байт
Попробуйте онлайн!
объяснение
источник
MATL , 29 байт
Попробуйте онлайн!
Объяснение:
источник
GE:
)?while
MATL цикл был бы намного сложнее, поэтому я пытался избежать этого.APL (Dyalog Unicode) , 39 байтов SBCS
-2 байта благодаря ngn, -1 байт с помощью надлежащей условной проверки.
Попробуйте онлайн!
источник
⍣
передает свой собственный левый аргумент в функцию операнда, поэтому в этом нет необходимости∘
. также⍵
не будет связываться с вещью справа, так как она начинается с функции (⍳
), так что в этом нет необходимости⊢
.JavaScript,
939187 байтВыдает ошибку переполнения для
0
или1
, выходы0
для2
.Попробуйте онлайн
источник
APL (NARS), символы 121, байты 242
тест за одну минуту здесь во время выполнения:
Естественно, нет проверки для типа и диапазона ...
источник
Japt,
2321 байтПопытайся
источник
Python 3 , 153 байта
Попробуйте онлайн! (Внимание: оценка занимает ~ 30 секунд)
источник