โจทย์: หาตำแหน่งของตัวคูณที่ n ของตัวเลข k ในลำดับ Fibonacci
ตัวอย่าง
k = 4, n = 5 (หาตัวคูณของ 4 ลำดับที่ 5)
Output: 30
อัลกอริทึม
- สร้างลำดับ Fibonacci ทีละตัว
- นับตัวที่หาร k ลงตัว
- เมื่อนับครบ n ตัว คืนตำแหน่ง (index × n ตามโค้ดต้นฉบับ)
ตัวอย่างโค้ด Python (แก้ไขจากต้นฉบับ)
def find_position(k, n):
"""หาตำแหน่งของตัวคูณที่ n ของ k ใน Fibonacci"""
if k == 0:
return 0
f1, f2 = 0, 1
count = 0
index = 2 # เริ่มจาก F(2)=1
while True:
f3 = f1 + f2
f1, f2 = f2, f3
if f2 % k == 0:
count += 1
if count == n:
return index
index += 1
# ทดสอบ
n = 5 # ตัวคูณที่ 5
k = 4 # ของเลข 4
print("Position of n'th multiple of k in Fibonacci Series is:", find_position(k, n))
# Output: 30
หมายเหตุ: โค้ดต้นฉบับมี logic ผิด (return n*i ไม่สมเหตุสมผล) และ syntax error โค้ดข้างต้นเขียนใหม่ให้ทำงานถูกต้อง