Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาตำแหน่งตัวคูณที่ n ของ k ใน Fibonacci Series ใน Python

โจทย์: หาตำแหน่งของตัวคูณที่ n ของตัวเลข k ในลำดับ Fibonacci

ตัวอย่าง

k = 4, n = 5 (หาตัวคูณของ 4 ลำดับที่ 5)
Output: 30

อัลกอริทึม

  1. สร้างลำดับ Fibonacci ทีละตัว
  2. นับตัวที่หาร k ลงตัว
  3. เมื่อนับครบ 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 โค้ดข้างต้นเขียนใหม่ให้ทำงานถูกต้อง