n 델 숫자-Kn 찾기


10

코델 숫자

코델 숫자는 일련의 시퀀스입니다. 즉, 양의 정수에 대한 크 뇌델 번호는 n합성 수들의 세트이다 m, 예 모두 i < m, 서로 소m만족 i^(m-n) = 1 (mod m). 특정 Knödel 번호 n는로 표시 Kn됩니다. ( 위키 백과 ).

예를 들어, K1있는 카 마이클 번호OEIS A002997는 . 그들은 다음과 같이 간다 : {561, 1105, 1729, 2465, 2821, 6601, ... }. K2이다 OEIS A050990는 ,와 같이 간다 {4, 6, 8, 10, 12, 14, 22, 24, 26, ... }.

당신의 작업

당신의 임무는 프로그램 / 기능 / 등을 작성하는 것입니다. 그 두 숫자를 소요 n하고 p. pKnödel 시퀀스 의 첫 번째 숫자를 반환해야합니다 Kn.

이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!

1, 6   ->   [561, 1105, 1729, 2465, 2821, 6601]
2, 3   ->   [4, 6, 8]
4, 9   ->   [6, 8, 12, 16, 20, 24, 28, 40, 44]
3, 1   ->   [9]
3, 0   ->   []
21, 21 ->   [45, 57, 63, 85, 105, 117, 147, 231, 273, 357, 399, 441, 483, 585, 609, 651, 741, 777, 861, 903, 987]

1
4순서에 K_4있지 않습니까? i^(4-4) = 1 mod 4항상 사실입니다.
isaacg

1
@isaacg MathWorld 는 추가 조건이 m > n있습니다.
Martin Ender

답변:


6

Pyth, 29 28 바이트

.f&tPZ!f&q1iTZt%^T-ZQZSZvzhQ

Jakube와 orlp 덕분에 1 바이트가 절약되었습니다.

데모.

양식으로 입력

p
n

상당히 간단한 계산. 상대 소수는 Pyth의 gcd 기능을 통해 확인됩니다. 이 코드는 .fPyth의 "처음 n 만족"기능을 보여줍니다.

m > n에서 m값 검색을 시작 하여 암시적인 조건을 통합 했습니다 n + 1.


4

하스켈, 89 바이트

매우 간단한 구현. 이진 연산자를 정의합니다 n!p.

n!p=take p[m|m<-[n+1..],any((<1).mod m)[2..m-1],and[i^(m-n)`mod`m<2|i<-[1..m],gcd i m<2]]

예:

Prelude> 4!9
[6,8,12,16,20,24,28,40,44]

2
무엇입니까 m>n?
rubik

나도 몰라 에 negative exponent오류 가 발생하여 21!21추가하면 문제가 해결되었습니다.
Lynn

1
하스켈을 설치하여 m>n&&비트를 제거하는 방법을 알아 내려고 작동 m<-[4..]하는 m<-[n+1..]것처럼 보입니다. 또한 바이트 수가 91입니다!
Kade

1
산뜻한! 감사합니다, @Vioz.
Lynn

@ Vioz- 그래서 당신은 Haskell을 알지 못하고 Haskell을 만났습니까? 어떻게 했어?
자랑스러운 Haskeller

2

하스켈, 90

a#b=gcd a b>1
n!p=take p[m|m<-[n+1..],any(m#)[2..m-1],all(\i->m#i||mod(i^(m-n))m<2)[1..m]]

@Marius의 대답과 거의 동일하지만 독립적으로 개발되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.