Số Knödel - Tìm Kn


10

Số Knödel

Các số Knödel là một tập hợp các chuỗi. Cụ thể, số KNODEL cho một số nguyên dương nlà tập hợp các hợp số m, chẳng hạn rằng tất cả i < m, nguyên tố cùng nhau đến m, thỏa mãn i^(m-n) = 1 (mod m). Tập hợp các số Knödel cho một cụ thể nđược ký hiệu Kn. ( Wikipedia ).

Ví dụ: K1là các số CarmichaelOEIS A002997 . Họ đi như : {561, 1105, 1729, 2465, 2821, 6601, ... }. K2OEIS A050990 và đi như thế {4, 6, 8, 10, 12, 14, 22, 24, 26, ... }.

Nhiệm vụ của bạn

Nhiệm vụ của bạn là viết một chương trình / chức năng / v.v. có hai số, np. Nó sẽ trả về các psố đầu tiên của Chuỗi Knödel , Kn.

Đây là , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!

Ví dụ

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
Tại sao 4không có trong chuỗi K_4? i^(4-4) = 1 mod 4luôn luôn đúng
isaacg

1
@isaacg MathWorld có điều kiện bổ sung đó m > n.
Martin Ender

Câu trả lời:


6

Bình thường, 29 28 byte

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

Lưu 1 byte nhờ Jakube và orlp.

Trình diễn.

Nhập dưới dạng

p
n

Một tính toán khá đơn giản. Tính nguyên thủy tương đối được kiểm tra thông qua chức năng gcd của Pyth. Mã này giới thiệu .f, chức năng "thỏa mãn n đầu tiên" của Pyth.

Tôi đã kết hợp điều kiện ngầm m > nbằng cách bắt đầu tìm kiếm các mgiá trị tại n + 1.


4

Haskell, 89 byte

Thực hiện rất đơn giản. Xác định một toán tử nhị phân 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]]

Thí dụ:

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

2
Để làm gì m>n?
rubik

Tôi không có ý kiến. Tôi đã nhận được negative exponentlỗi 21!21và thêm vào đó đã giải quyết vấn đề.
Lynn

1
Tôi đã cài đặt Haskell để thử và tìm ra cách loại bỏ m>n&&bit, thay đổi m<-[4..]để m<-[n+1..]có vẻ hoạt động. Bạn cũng có được số byte là 91!
Kade

1
Khéo léo! Cảm ơn, @Vioz.
Lynn

@ Vioz- Vậy bạn đã hòa giải với Haskell mà không biết Haskell trước? Bạn đã làm nó như thế nào?
tự hào

2

Haskell, 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]]

giống như câu trả lời của @Marius, mặc dù được phát triển độc lập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.