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

โปรแกรม Python หาตัวหารที่ดีกว่าของตัวเลข


สมมติว่าเรามีตัวเลข n เราต้องหาตัวหารของ n ตัวใดตัวหนึ่งดีกว่าตามเงื่อนไขเหล่านี้:เรามีตัวเลขสองตัว p และ q ตัวที่มีตัวเลขรวมกันเป็นจำนวนที่มากกว่าเรียกว่าดีกว่าอีกตัว เมื่อผลรวมของหลักเท่ากัน ตัวเลขที่น้อยกว่าจะดีกว่า

ดังนั้น ถ้าอินพุตเท่ากับ n =180 ผลลัพธ์จะเป็น 9 เพราะตัวหารคือ [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]. ดังนั้นจำนวนที่มีจำนวนหลักสูงสุดคือ [9, 18, 36, 45, 90, 180] แต่ในจำนวนนั้น 9 เป็นตัวเลขที่ดีกว่าเนื่องจากค่าน้อยกว่า

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • div :=1, md :=1
  • สำหรับฉันในช่วง 2 ถึง n ทำ
    • k :=ฉัน
    • ถ้า n mod i> 0 แล้ว
      • ติดตามตอนต่อไป
    • s :=0
    • ในขณะที่ k> 0, ทำ
      • s :=s + k mod 10
      • k :=k / 10
    • ถ้า s> md แล้ว
      • md :=s
      • div :=ฉัน
  • ผลตอบแทน div

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

def solve(n):
   div = 1
   md = 1
   for i in range(2, n + 1):
      k = i
      if n % i > 0:
         continue
      s = 0
      while k > 0:
         s += k % 10
         k /= 10
      if s > md:
         md = s
         div = i

   return div

n = 180
print(solve(n))

อินพุต

180

ผลลัพธ์

9