สมมติว่าเรามีอาร์เรย์ที่เรียกว่า digits ที่มีเฉพาะตัวเลข เราต้องหาจำนวนที่น้อยที่สุดที่เป็นไปได้จากตัวเลขที่ระบุ จากนั้นตรวจสอบว่าตัวเลขโดยนำหลักแรกและหลักสุดท้ายของตัวเลขที่สร้างขึ้นมานั้นเป็นจำนวนเฉพาะหรือไม่ เราจะพิมพ์ตัวเลขเองแล้วตามด้วยตัวเลขเฉพาะ
ดังนั้น หากอินพุตเป็นตัวเลข =[5,2,1,7] เอาต์พุตจะเป็น 1257 จะเป็นตัวเลขที่น้อยที่สุด ตัวเลขโดยนำหลักแรกและหลักสุดท้ายคือ 17 และ 71 เป็นจำนวนเฉพาะ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- digits_freq :=แผนที่ที่มีความถี่ของตัวเลข
- หมายเลข :=สตริงว่าง
- สำหรับฉันในช่วง 0 ถึง 9 ทำ
- สำหรับ j ในช่วง 0 ถึง digits_freq[i] - 1 ทำ
- number :=number ต่อกัน digit i
- สำหรับ j ในช่วง 0 ถึง digits_freq[i] - 1 ทำ
- num :=number โดยเอาหลักแรกและหลักสุดท้ายของตัวเลข
- rev :=ตัวเลขโดยเอาหลักสุดท้ายและหลักแรกของตัวเลข
- ถ้า num เป็นจำนวนเฉพาะ และ rev เป็นจำนวนเฉพาะ แล้ว
- คืนหมายเลข num rev
- มิฉะนั้น เมื่อ num เป็นจำนวนเฉพาะ แล้ว
- คืนหมายเลข num
- มิฉะนั้น เมื่อ rev เป็นจำนวนเฉพาะ แล้ว
- หมายเลขส่งคืน rev
- มิฉะนั้น
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
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))
อินพุต
[5,2,1,7]
ผลลัพธ์
(1257, 17, 71)