Dado um número inteiro maior que 1, imprima o número de maneiras pelas quais ele pode ser expresso como a soma de um ou mais números primos consecutivos.
A ordem dos summands não importa. Uma soma pode consistir em um único número (portanto, a saída para qualquer primo será pelo menos 1.)
Isso é código-golfe . Aplicam-se regras padrão.
Consulte este wiki da OEIS para obter informações e sequências relacionadas, incluindo a própria sequência OEIS A054845 .
Casos de teste
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
é o mesmo queÆR
R , 95 bytes
Experimente online!
fonte
x
!cumsum
e definir os primeiros elementos0
para obter as somas primárias consecutivas. O golfe principal era apenas eu tentando fazer com que o último caso de teste funcionasse, e eu tive sorte de saber que era mais curto do queouter
! Tenho representante mais do que suficiente (pelo menos até obtermos os requisitos adequados de representante), e sempre fico feliz em ajudar mais golfistas do R a obter mais visibilidade!05AB1E , 6 bytes
Código
Usa a codificação 05AB1E . Experimente online!
fonte
JavaScript (ES6), 92 bytes
Experimente online!
Comentado
fonte
MATL,
1512 bytesExperimente no MATL Online
A inicial
E
(multiplicar por 2) garante que, para entrada principal, o resultado da entrada posteriorYs
(cumsum
) não faça com que a entrada principal se repita na parte zerada da matriz (mexendo com a contagem).Explicação:
fonte
Braquilog ,
149 bytesExperimente online!
Vários casos de teste
(-5 bytes inteiros, graças a @Kroppeb!)
Explicação:
fonte
⟦ṗˢ
dentro doᶜ
loop. Eu adquiri este{⟦ṗˢs+;?=}ᶜ
conjunto de testes: Experimente online!;?=
por?
e obter{⟦ṗˢs+?}ᶜ
(9 bytes)Retina 0.8.2 , 68 bytes
Experimente online! O link inclui casos de teste mais rápidos. Explicação:
Execute o script inteiro no modo multilinha em que
^
e$
combine em todas as linhas.Converta em unário duas vezes, primeiro usando
_
s, depois usando1
s._
Exclua todos os números compostos no intervalo.
_
_
1
fonte
Casca ,
98 bytes-1 byte graças ao Mr.Xcoder (use o argumento nomeado em
¹
vez deS
)!Experimente online!
Explicação
fonte
#¹ṁ∫ṫ↑İp
deve economizar 1 byte.MATL , 16 bytes
Experimente no MATL Online!
Explicação
fonte
Python 2 ,
106104 bytesExperimente online!
fonte
Limpo ,
10098 bytesExperimente online!
Define a função
$ :: Int -> Int
que funciona como explicado abaixo:(A explicação é para uma versão mais antiga, mas logicamente idêntica)
fonte
Perl 6 , 53 bytes
Experimente online!
Usa o operador de redução de triângulo duas vezes. O último caso de teste é muito lento para o TIO.
Explicação
fonte
Japonês, 17 bytes
Tem que haver uma maneira mais curta do que isso!
Dados no último caso de teste.
Experimente ou execute todos os casos de teste
Explicação
fonte
Java 10,
195194184182 bytes-1 byte graças a @ceilingcat .
-10 bytes graças a @SaraJ .
Experimente online.
Explicação:
É basicamente semelhante às respostas Jelly ou 05AB1E , apenas 190 bytes a mais. XD
Aqui uma comparação para cada uma das partes, adicionada apenas por diversão (e para ver por que Java é tão detalhado e essas linguagens de golfe são tão poderosas):
n->{}
[2, n]
: (Geléia: 2 bytes)ÆR
; (05AB1E: 2 bytes)ÅP
; (Java 10: 95 bytes)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 byte)Œ
; (Java 10: 55 bytes)for(x=L.size(),i=0;i<x;)for(k=i++;k<x;)
e(int)L.get(k++);
§
; (05AB1E: 1 byte)O
; (Java 10: 9 bytes),s
e,s=0
es+=
ċ
; (05AB1E: 2 bytes)QO
; (Java 10: 15 bytes),r=0
er+=s==n?1:0
return r;
fonte
218918
em 12,5 segundos a tbh, considerando que ele fará218918-2 = 218,916
iterações dentro de um loop interno de:n
iterações para cada prime; 1 iteração para cada número par; e em algum lugar entre as[2,p/2)
iterações para cada número ímpar (quase dois bilhões de iterações), após o qual adiciona19518
primos à lista na memória. E, em seguida, fará um loop adicionalsum([0,19518]) = 190,485,921
no segundo loop aninhado. 2.223.570.640 iterações no total para ser exato .%i
pois estamos verificando o intervalo[2, n]
, portanto não precisarei verificari=1
. :)Physica , 41 bytes
Experimente online!
Como funciona
fonte
Haskell , 89 bytes
Experimente online!
Alternativa, 89 bytes
Experimente online!
fonte