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
- đối với j trong phạm vi 0 đến digit_freq [i] - 1, thực hiện
- 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)