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

Kiểm tra xem chữ số đầu tiên và cuối cùng của số nhỏ nhất có tạo thành số nguyên tố hay không trong Python

Giả sử chúng ta có một mảng được gọi là các chữ số chỉ chứa các chữ số. Chúng ta phải tìm số nhỏ nhất có thể từ các chữ số đã cho và sau đó kiểm tra xem các số bằng cách lấy các chữ số đầu tiên và cuối cùng của số được tạo ra có phải là số nguyên tố hay không. Chúng tôi sẽ in chính số đó và sau đó là các số nguyên tố.

Vì vậy, nếu đầu vào là các chữ số =[5,2,1,7], thì đầu ra sẽ là 1257 là số nhỏ nhất. Các số bằng cách lấy chữ số đầu tiên và cuối cùng là 17 và 71, cả hai đều là số nguyên tố.

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

  • umbers_freq:=một bản đồ chứa tần số của các chữ số
  • number:=chuỗi trống
  • đối với tôi trong phạm vi từ 0 đến 9, hãy thực hiện
    • đối với j trong phạm vi 0 đến digit_freq [i] - 1, thực hiện
      • number:=số nối chữ số i
  • num:=số bằng cách lấy chữ số đầu tiên và chữ số cuối cùng của số
  • rev:=số bằng cách lấy chữ số cuối cùng và chữ số đầu tiên của số
  • nếu num là số nguyên tố và rev là số nguyên tố, thì
    • trả về số, num, rev
  • ngược lại khi num là số nguyên tố thì
    • số trả lại, num
  • ngược lại khi rev là số nguyên tố thì
    • số trả lại, số lần quay
  • nếu không,
    • trả về Sai

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

Mã mẫu

from collections import defaultdict
 
def isPrime(num):
   if num > 1:
      for i in range(2, num):
         if num % i == 0:
           return False
      return True
   return 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])
 
   if isPrime(num) and isPrime(rev):
      return int(number), num, rev
   elif isPrime(num):
      return number, num
   elif isPrime(rev):
      return number, rev
   else:
      return False
   
digits = [5,2,1,7]
print(solve(digits))

Đầu vào

[5,2,1,7]

Đầu ra

(1257, 17, 71)