หมายเลขKnödel - ค้นหา Kn


10

หมายเลขKnödel

หมายเลขKnödelเป็นชุดของลำดับ โดยเฉพาะตัวเลขKnödelสำหรับจำนวนเต็มบวกnเป็นชุดของตัวเลขคอมโพสิตmเช่นว่าทั้งหมดi < m, coprimeเพื่อตอบสนองความm i^(m-n) = 1 (mod m)ชุดของตัวเลขKnödelสำหรับเฉพาะจะแสดงn Kn( Wikipedia )

ยกตัวอย่างเช่นK1เป็นตัวเลขร์ไมเคิลและOEIS A002997 {561, 1105, 1729, 2465, 2821, 6601, ... }พวกเขาไปที่ชอบ: K2คือOEIS A050990และเป็นเหมือน, {4, 6, 8, 10, 12, 14, 22, 24, 26, ... }.

งานของคุณ

งานของคุณคือการเขียนโปรแกรม / ฟังก์ชั่น / ฯลฯ ที่จะนำตัวเลขสองและn pมันควรจะกลับคนแรกที่ตัวเลขของKnödelลำดับpKn

นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

ตัวอย่าง

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 แม ธ เวิลด์m > nมีเงื่อนไขเพิ่มเติมที่
Martin Ender

คำตอบ:


6

Pyth, 29 28 ไบต์

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

บันทึก 1 ไบต์ขอบคุณ Jakube และ orlp

สาธิต.

ป้อนข้อมูลในแบบฟอร์ม

p
n

การคำนวณที่ค่อนข้างตรงไปตรงมา การตรวจสอบความสัมพันธ์ดั้งเดิมผ่านฟังก์ชั่น gcd ของ Pyth รหัสนี้แสดงให้เห็นถึง.fฟังก์ชั่น "first n ภิรมย์" ของ Pyth

ผมได้รวมสภาพโดยปริยายว่าm > nด้วยการเริ่มต้นการค้นหาค่าที่mn + 1


4

Haskell, 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
ผมติดตั้ง Haskell จะลองและคิดออกวิธีการกำจัดของm>n&&บิตเปลี่ยนm<-[4..]ไปm<-[n+1..]ดูเหมือนว่าจะทำงาน คุณยังได้รับจำนวนไบต์ 91!
Kade

1
เรียบร้อย! ขอบคุณ @Vioz
Lynn

@ Vioz- คุณยุ่งกับ Haskell โดยไม่รู้จัก Haskell มาก่อนเหรอ? คุณทำได้อย่างไร?
ภูมิใจ Haskeller

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

เหมือนกับคำตอบของ @Marius มากแม้ว่าจะพัฒนาขึ้นมาอย่างอิสระ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.