用Python檢查N是否為二面體素數
假設我們有一個數字n。我們必須檢查n是否為二面體素數。當一個數字本身是素數,並且無論顯示器的方向(正常或倒置)如何,使用7段顯示器都能顯示相同的數字或任何其他素數時,這個數字就被稱為二面體素數。
因此,如果輸入為n = 1181,則輸出為True

第二個是第一個的倒置形式,兩者都是素數。
為了解決這個問題,我們將遵循以下步驟:
- 定義一個函式up_side_down()。這將接收n
- temp := n,total := 0
- 當temp > 0時,執行以下操作:
- d := temp mod 10
- 如果d等於2,則d := 5
- 否則,如果d等於5,則d := 2
- total := total * 10 + d
- temp := (temp / 10)的商
- 返回total
- 從主方法執行以下操作:
- 如果n不是素數,或者up_side_down(n)不是素數,或者n的反轉不是素數,或者up_side_down(n)的反轉不是素數,則
- 返回False
- temp := n
- 當temp > 0時,執行以下操作:
- rem := temp mod 10
- 如果rem是[3, 4, 6, 7, 9]中的任何一個,則
- 返回False
- temp := (temp / 10)的商
- 返回True
讓我們看看下面的實現,以便更好地理解:
示例程式碼
prime = (int(1e5)+5)*[True] def reverse(n): return int(str(n)[::-1]) def up_side_down(n): temp = n total = 0 while temp>0: d = temp % 10 if d == 2: d = 5 elif d == 5: d = 2 total = total * 10 + d temp//= 10 return total def get_all_prime(): prime[0] = prime[1] = False for i in range(2, int(1e5)+1): j = 2 while i * j<= int(1e5): prime[i * j] = False j+= 1 def solve(n): get_all_prime() if not prime[n] or not prime[up_side_down(n)] or not prime[reverse(n)] or not prime[reverse(up_side_down(n))]: return False temp = n while temp>0: rem = temp % 10; if rem in [3, 4, 6, 7, 9]: return False temp //= 10 return True n = 1181 print(solve(n))
輸入
23, 3
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP