Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để tìm ước số tốt hơn của một số

Giả sử chúng ta có một số n. Ta phải tìm ước của n là ước nào tốt hơn dựa trên các điều kiện sau:Ta có hai số p và q, số nào có tổng các chữ số thành một số lớn hơn được gọi là lớn hơn số kia. Khi tổng các chữ số bằng nhau thì số nhỏ hơn là số tốt hơn.

Vì vậy, nếu đầu vào là n =180, thì đầu ra sẽ là 9 vì các ước là [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]. Vì vậy, số có tổng các chữ số là lớn nhất là [9, 18, 36, 45, 90, 180], nhưng trong số đó 9 là số tốt hơn vì giá trị của nó nhỏ hơn.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • div:=1, md:=1
  • đối với tôi trong phạm vi từ 2 đến n, thực hiện
    • k:=i
    • nếu n mod i> 0, thì
      • chuyển sang lần lặp tiếp theo
    • s:=0
    • while k> 0, do
      • s:=s + k mod 10
      • k:=k / 10
    • nếu s> md, thì
      • md:=s
      • div:=i
  • trả về div

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn

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

Đầu vào

180

Đầu ra

9