Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

숫자의 더 나은 제수를 찾는 Python 프로그램

<시간/>

숫자 n이 있다고 가정합니다. 우리는 다음 조건을 기반으로 하여 어느 것이 더 나은 n의 제수를 찾아야 합니다. 우리는 두 개의 숫자 p와 q를 가지고 있습니다. 자릿수의 합이 같을 때 숫자가 작을수록 좋습니다.

따라서 입력이 n =180과 같으면 제수가 [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 범위의 i에 대해 다음을 수행합니다.
    • k :=나
    • n mod i> 0이면
      • 다음 반복으로 이동
    • s :=0
    • k> 0일 때 수행
      • s :=s + k 모드 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