우리 대부분은 …
그러나 특정 범위 의 플러스 프라임 ( 6n+1
)은 몇 개이고 마이너스 프라임 ( 6n-1
)은 몇 개입니까?
도전
정수 감안할 때 k>5
, 얼마나 많은 계산 primes<=k
이다 PlusPrimes 얼마나 많은이 MinusPrimes .
예
위해 k=100
우리는이
[5, 11, 17, 23, 29, 41, 47, 53, 59, 71, 83, 89]
12 MinusPrimes
및
[7, 13, 19, 31, 37, 43, 61, 67, 73, 79, 97]
11 PlusPrimes을
위해 k=149
우리는이
[5, 11, 17, 23, 29, 41, 47, 53, 59, 71, 83, 89, 101, 107, 113, 131, 137, 149]
18 MinusPrimes
및
[7, 13, 19, 31, 37, 43, 61, 67, 73, 79, 97, 103, 109, 127, 139]
15 PlusPrimes을
규칙
코드는 2 개의 정수 를 출력해야합니다 . 하나는 MinusPrimes 용 이고 다른 하나는 PlusPrimes 용 입니다 (원하는 순서를 지정하십시오).
이것은 코드 골프입니다 : 바이트 단위의 최단 답변이 승리합니다!
테스트 사례
입력 -> 출력 [ MinusPrimes , PlusPrimes ]
6->[1,0]
7->[1,1]
86->[11,10]
986->[86,78]
5252->[351,344]
100000->[4806,4784]
4000000->[141696, 141448]
답변
05AB1E , 10 9 바이트
Outgolfer Erik 덕분에 1 바이트 절약
로 출력 [PlusPrimes, MinusPrimes]
LDpÏ6%5Ñ¢
설명
L # push range [1 ... input]
DpÏ # keep only primes
6% # mod each by 6
5Ñ # divisors of 5 [1, 5]
¢ # count
답변
MATL , 10 바이트
Zq6\!5lh=s
온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오 .
설명
Zq % Implicitly input k. Push row vector of primes up to k
6\ % Modulo 6, element-wise
! % Transpose into a column vector
5lh % Push row vector [5, 1]
= % Is equal?, element-wise with broadcast
s % Sum of each column. Implicitly display
답변
파이썬 2 , 77 바이트
Neil 덕분에 -2 바이트
lambda x:[sum(all(n%j for j in range(2,n))for n in range(i,x,6))for i in 7,5]
이전 솔루션, 83 81 79 바이트
Xcoder 덕분에 -1 바이트,
Halvard Hummel 덕분에 -2 바이트
lambda x:map([all(n%i for i in range(2,n))*n%6for n in range(4,x)].count,[5,1])
온라인으로 사용해보십시오!
[MinusPrimes, PlusPrimes]로 출력
답변
젤리 , 7 바이트
s6ÆPSm4
더하기 빼기
작동 원리
s6ÆPSm4 Main link. Argument: n
s6 Split [1, ..., n] into chunks of length 6.
ÆP Test all integers for primality.
S Sum across columns.
This counts the primes of the form 6k + c for c = 1, ..., 6.
m4 Take every 4th element, leaving the counts for 6k + 1 and 6k + 5.
답변
수학, 51 바이트
(s=#;Mod[Prime~Array~PrimePi@s,6]~Count~#&/@{5,1})&
@ngenisis가 4 바이트를 절약하면서 골프를 쳤습니다.
수학, 47 바이트
sPrime~Array~PrimePi@s~Mod~6~Count~#&/@{5,1}
답변
Japt , 15 13 11 바이트
출력 순서는 [+,-]
입니다.
õj ò6 yx ë4
- Dennis의 Jelly 솔루션 에서 영감을 얻었 지만 골프 후 항구에 가까워졌습니다.
- 2 바이트는 올리버에게 감사합니다
ë
.
설명
정수의 묵시적 입력 U
.
õj
õ
1에서 1까지 의 정수 배열 ( )을 생성하고 U
각각이 소수 ( j
) 인지 확인 하여 부울 배열을 제공합니다.
ò6
배열을 길이가 6 인 하위 배열로 분할하십시오.
yx
( y
)를 바꾸고 열을 합산하십시오.
ë4
배열의 모든 4 번째 요소를 가져 와서 내재적으로 출력합니다.
원본, 19 17 16 15 바이트
õ fj
5â £è_%6¥X
- 15를 배열로 나누는 월계수에 휴식을 취한 후 Oliver의 5의 제수를 사용하라는 영감을 얻은 1 바이트 덕분에 1 바이트.
답변
J , 23 바이트
1#.5 1=/6|_1 p:@i.@p:>:
1#.5 1=/6|_1 p:@i.@p:>: input: y
_1 p: number of primes
>: less than y + 1
p:@i. prime range from 0 to that number
6| get residues modulo 6
5 1=/ table of values equal to 5 or 1
1#. sum of each (antibase 1)