Если целое число больше 1, выведите количество способов, которыми оно может быть выражено как сумма одного или нескольких последовательных простых чисел.
Порядок слагаемых не имеет значения. Сумма может состоять из одного числа (поэтому выход для любого простого числа будет по крайней мере 1).
Это код-гольф . Стандартные правила применяются.
См. Эту вики OEIS для связанной информации и последовательностей, включая саму последовательность OEIS A054845 .
Контрольные примеры
2 => 1
3 => 1
4 => 0
5 => 2
6 => 0
7 => 1
8 => 1
10 => 1
36 => 2
41 => 3
42 => 1
43 => 1
44 => 0
311 => 5
1151 => 4
34421 => 6
2æR
так же, какÆR
R , 95 байт
Попробуйте онлайн!
источник
x
!cumsum
и настройке первых нескольких элементов0
для получения последовательных простых сумм. Главный гольф был только мной, пытающимся заставить последний тестовый случай работать, и я просто повезло, что это было корочеouter
! У меня более чем достаточно представителей (по крайней мере, до тех пор, пока мы не получим надлежащие требования к представителям), и я всегда рад помочь большему количеству игроков в гольф R получить больше видимости!05AB1E , 6 байтов
Код
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
JavaScript (ES6), 92 байта
Попробуйте онлайн!
комментарии
источник
MATL,
1512 байтПопробуйте это на MATL Online
Инициал
E
(умножьте на 2) гарантирует, что при вводе простых чисел результат функции последующегоYs
(cumsum
) не будет иметь повторяющегося простого ввода в обнуленной части матрицы (таким образом, вмешиваясь в счет).Объяснение:
источник
Брахилог ,
149 байтПопробуйте онлайн!
Несколько тестовых случаев
(-5 целых байтов, спасибо @Kroppeb!)
Объяснение:
источник
⟦ṗˢ
внутриᶜ
цикла. Я получил этот{⟦ṗˢs+;?=}ᶜ
набор тестов: попробуйте онлайн!;?=
на?
и получить{⟦ṗˢs+?}ᶜ
(9 байт)Сетчатка 0.8.2 , 68 байт
Попробуйте онлайн! Ссылка включает в себя более быстрые тестовые случаи. Объяснение:
Запустите весь скрипт в многострочном режиме, где
^
и$
соответствует каждой строке.Конвертировать в унарный дважды, сначала используя
_
s, затем используя1
s._
Удалить все составные числа в диапазоне.
_
_
1
источник
Шелуха ,
98 байт-1 байт благодаря Mr.Xcoder (используйте именованный аргумент
¹
вместоS
)!Попробуйте онлайн!
объяснение
источник
#¹ṁ∫ṫ↑İp
следует сохранить 1 байт.MATL , 16 байт
Попробуйте это в MATL Online!
объяснение
источник
Python 2 ,
106104 байтаПопробуйте онлайн!
источник
Чисто ,
10098 байтПопробуйте онлайн!
Определяет функцию,
$ :: Int -> Int
которая работает как объяснено ниже:(Объяснение для более старой, но логически идентичной версии)
источник
Perl 6 , 53 байта
Попробуйте онлайн!
Использует оператор сокращения треугольника дважды. Последний контрольный пример слишком медленный для TIO.
объяснение
источник
Japt, 17 байт
Должен быть более короткий путь, чем этот!
Выкладывает на последний контрольный пример.
Попробуйте или запустите все тесты
объяснение
источник
Ява 10,
195194184182 байта-1 байт благодаря @ceilingcat .
-10 байт благодаря @SaraJ .
Попробуйте онлайн.
Объяснение:
Это в основном похоже на ответы Jelly или 05AB1E , всего на 190 байт больше .. XD
Вот сравнение для каждой из частей, добавленное просто для забавы (и чтобы увидеть, почему Java такая многословная, и эти языки игры в гольф такие мощные):
n->{}
[2, n]
: (желе: 2 байта)ÆR
; (05AB1E: 2 байта)ÅP
; (Java 10: 95 байт)var L=new java.util.Stack();int i=1,k,x,s,r=0;for(;i++<n;){for(k=1;i%++k>0;);if(k==i)L.add(i);}
Ẇ
; (05AB1E: 1 байт)Œ
; (Java 10: 55 байт)for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
и(int)L.get(k++);
§
; (05AB1E: 1 байт)O
; (Java 10: 9 байт),s
и,s=0
иs+=
ċ
; (05AB1E: 2 байта)QO
; (Java 10: 15 байт),r=0
иr+=s==n?1:0
return r;
источник
218918
12,5 секунды, учитывая, что он будет выполнять218918-2 = 218,916
итерации с внутренним циклом:n
итерации для каждого простого числа; 1 итерация для каждого четного числа; и где-то между[2,p/2)
итерациями для каждого нечетного числа (около двух миллиардов итераций), после чего он добавляет19518
простые числа в список в памяти. И затем он будет зацикливаться на дополнительноеsum([0,19518]) = 190,485,921
время во втором вложенном цикле .. Всего 2223 570 640 итераций, если быть точным .%i
так как мы проверяем диапазон[2, n]
, поэтому мне не нужно проверятьi=1
. :)Физика , 41 байт
Попробуйте онлайн!
Как это устроено
источник
Haskell , 89 байт
Попробуйте онлайн!
Альтернатива, 89 байт
Попробуйте онлайн!
источник