แรงบันดาลใจจากคำถามนี้มากกว่าที่คณิตศาสตร์
ปัญหา
ให้เป็นจำนวนธรรมชาติ
n
≥ 2
ใช้ตัวหารที่ใหญ่ที่สุดของn
- ซึ่งจะแตกต่างจากn
ตัวเอง -n
และลบได้จาก1
ทำซ้ำจนกว่าคุณจะได้รับ
คำถาม
มันไม่กี่ขั้นตอนใช้เวลาไปถึงจำนวนที่กำหนด1
n ≥ 2
ตัวอย่างโดยละเอียด
n = 30
ให้
ตัวหารที่ยิ่งใหญ่ที่สุดของ:
1. 30 is 15 --> 30 - 15 = 15
2. 15 is 5 --> 15 - 5 = 10
3. 10 is 5 --> 10 - 5 = 5
4. 5 is 1 --> 5 - 1 = 4
5. 4 is 2 --> 4 - 2 = 2
6. 2 is 1 --> 2 - 1 = 1
มันต้องใช้เวลา6 ขั้นตอน1
ในการเข้าถึง
อินพุต
- การป้อนข้อมูลเป็นจำนวนเต็มที่
n
n ≥ 2
- โปรแกรมของคุณควรรองรับการป้อนข้อมูลจนถึงค่าจำนวนเต็มสูงสุดของภาษา
เอาท์พุต
6
เพียงแค่การส่งออกจำนวนของขั้นตอนเช่น- ช่องว่างนำหน้า / ต่อท้ายหรือขึ้นบรรทัดใหม่นั้นใช้ได้
ตัวอย่าง
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
ความต้องการ
- คุณสามารถรับอินพุตจาก
STDIN
อาร์กิวเมนต์บรรทัดคำสั่งเป็นพารามิเตอร์ฟังก์ชันหรือจากค่าที่ใกล้เคียงที่สุด - คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น หากเป็นฟังก์ชันที่ไม่ระบุตัวตนโปรดระบุตัวอย่างของวิธีการเรียกใช้
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ
- ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
ชุดนี้สามารถพบได้ใน OEIS เช่นกัน: A064097
กึ่งลอการิทึม inductively กำหนดโดย
a(1) = 0
และa(p) = 1 + a(p-1)
ถ้าp
เป็นนายกรัฐมนตรีและถ้าa(n*m) = a(n) + a(m)
m,n > 1
2^32 - 1
ผมจะบอกว่าคุณควรจะรองรับได้ถึง ส่วนที่เหลือขึ้นอยู่กับคุณและระบบของคุณ หวังว่านี่คือสิ่งที่คุณหมายถึงกับคำถามของคุณ