使用 Python 檢查最小數字的首位數字是否構成素數
假設我們有一個名為 digits 的陣列,其中只包含數字。我們必須找到給定數字中最小的可能數字,然後檢查透過獲取生成的數字的首位數字和末位數字形成的數字是否為素數。我們將列印數字本身,然後列印素數。
因此,如果輸入類似於 digits = [5,2,1,7],則輸出將是 1257 是最小的數字。透過取首位數字和末位數字得到的數字是 17 和 71,兩者都是素數。
為了解決這個問題,我們將遵循以下步驟:
- digits_freq := 一個包含數字頻率的對映
- number := 空字串
- 對於範圍從 0 到 9 的 i,執行以下操作:
- 對於範圍從 0 到 digits_freq[i] - 1 的 j,執行以下操作:
- number := number 拼接數字 i
- 對於範圍從 0 到 digits_freq[i] - 1 的 j,執行以下操作:
- num := 透過取 number 的首位數字和末位數字形成的數字
- rev := 透過取 number 的末位數字和首位數字形成的數字
- 如果 num 是素數並且 rev 是素數,則
- 返回 number、num、rev
- 否則,如果 num 是素數,則
- 返回 number、num
- 否則,如果 rev 是素數,則
- 返回 number、rev
- 否則,
- 返回 False
讓我們看看以下實現以獲得更好的理解:
示例程式碼
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)
廣告