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

주어진 배열에 Python에서 일부 정수의 모든 제수가 포함되어 있는지 확인하십시오.

<시간/>

배열 num이 있다고 가정하고 이 배열에 일부 정수의 제수가 모두 포함되어 있는지 여부를 확인해야 합니다.

따라서 입력이 nums =[1, 2, 3, 4, 6, 8, 12, 24]와 같으면 출력은 24의 제수이므로 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 최대 :=최대 숫자
  • temp :=새 목록
  • 1에서 최대값의 제곱근 범위에 있는 i에 대해 다음을 수행합니다.
    • 최대값을 i로 나눌 수 있는 경우
      • temp의 끝에 i 삽입
      • (최대 / i)의 몫이 i와 같지 않으면
        • temp의 끝에 (maximum / i)의 몫 삽입
    • temp의 크기가 num의 크기와 같지 않으면
      • 거짓을 반환
    • 목록 번호 및 임시 정렬
    • 0부터 숫자 - 1까지의 범위에 있는 i에 대해
      • temp[i]가 nums[i]와 같지 않으면
        • 거짓을 반환
  • 참 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시 코드

from math import sqrt
 
def solve(nums):
   maximum = max(nums)
 
   temp = []
   for i in range(1,int(sqrt(maximum))+1):
      if maximum % i == 0:
         temp.append(i)
         if (maximum // i != i):
           temp.append(maximum // i)
 
   if len(temp) != len(nums):
      return False
 
   nums.sort()
   temp.sort()
 
   for i in range(len(nums)):
      if temp[i] != nums[i]:
         return False
   return True
   
nums = [1, 2, 3, 4, 6, 8, 12, 24]
print(solve(nums))

입력

[1, 2, 3, 4, 6, 8, 12, 24]

출력

True