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

파이썬에서 가장 작은 숫자의 첫 번째와 마지막 숫자가 소수를 형성하는지 확인

<시간/>

숫자만 포함하는 숫자라는 배열이 있다고 가정합니다. 주어진 자릿수에서 가능한 최소 수를 찾은 다음 생성된 수의 첫 번째와 마지막 자릿수를 취하여 숫자가 소수인지 확인해야 합니다. 숫자 자체를 인쇄한 다음 소수를 인쇄합니다.

따라서 입력이 숫자 =[5,2,1,7]과 같으면 출력은 1257이 가장 작은 숫자가 됩니다. 앞자리와 끝자리를 취한 숫자는 17과 71이며 둘 다 소수입니다.

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

  • digits_freq :=숫자의 빈도를 포함하는 지도
  • 숫자 :=빈 문자열
  • 0에서 9 사이의 i에 대해
    • 0~digits_freq[i] - 1 범위의 j에 대해
      • 숫자 :=숫자 연결 숫자 i
  • num :=숫자의 첫 번째와 마지막 숫자를 취하여 숫자
  • rev :=숫자의 마지막과 첫 번째 숫자를 취하여 숫자
  • num이 소수이고 rev가 소수이면
    • 반환 번호, num, rev
  • 그렇지 않으면 num이 소수이면
    • 반환 번호, 숫자
  • 그렇지 않으면 rev가 소수이면
    • 반환 번호, rev
  • 그렇지 않으면
    • 거짓을 반환

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

예시 코드

컬렉션에서 가져오기 defaultdict def isPrime(num):if num> 1:for i in range(2, num):if num % i ==0:False 반환 True 반환 False def solve(arr):digits_freq =defaultdict(int) for i in range(len(arr)):Digits_freq[arr[i]] +=1 number ="" for i in range(0, 10):for j in range(digits_freq[i]):number +=str(i) num =int(number[0] + number[-1]) rev =int(number[-1] + number[0]) isPrime(num) 및 isPrime(rev):int 반환 (number), num, rev elif isPrime(num):반환 번호, num elif isPrime(rev):반환 번호, rev else:반환 False 숫자 =[5,2,1,7]print(solve(digits)) 

입력

[5,2,1,7]

출력

(1257, 17, 71)