python123回文素數 平方回文素數

2021-10-11 21:59:10 字數 1390 閱讀 6470

問題描述:

素數的平方是回文,比如11*11=121。

求不超過1000的平方回文素數。

我的**:import math

def prime(m):

count=0

for i in range(2,int(math.sqrt(m))+1):

if m%i==0:

count=1

if count!=1:

return true

else:

return false

def palindrome(n):

if str(n**2)==str(n**2)[::-1]:

return true

else:

return false

for j in range(2,1000):

if prime(j) and palindrome(j):

print j,

結果:2 3 11 101 307

我的思路:

過程很簡單,還是定義兩個函式,乙個用來判斷出入的數是否是素數,另乙個用來判斷傳入數的平方是否為回文數,最後遍歷2到1000中的數,輸出同時滿足數是素數且數的平方是回文數這兩個條件的數;

示例**:import math

def isprimenumber(num):

i = 2

x = math.sqrt(num)

while i 

if num%i == 0:

return false

i += 1

return true

def reverse(num):

rnum = 0

while num:

rnum = rnum*10 + num%10

num /= 10

return rnum

def rprimenumber(num):

arr = 

i = 2

while i 

if isprimenumber(i) and i**2 == reverse(i**2):

i += 1

return arr

print rprimenumber(1000)

結果:[2, 3, 11, 101, 121, 307]

示例**的結果中的121是錯誤的,121=11*11   121*121=14641,如果這算是對的,那麼111也應該算進去的,111=3*37  111*111=12321

更改:將示例**中while  i <  x改為while  i <=  x即可,錯誤的原因是判斷素數的取值範圍(2到數的平方根之間的值,)錯誤,少算了math.sqrt(num);

更改後的結果:

[2, 3, 11, 101, 307]

866 回文素數

求出大於或等於n的最小回文素數。回顧一下,如果乙個數大於 1,且其因數只有 1 和它自身,那麼這個數是素數。例如,2,3,5,7,11 以及 13 是素數。回顧一下,如果乙個數從左往右讀與從右往左讀是一樣的,那麼這個數是回文數。例如,12321 是回文數。示例 1 輸入 6輸出 7示例 2 輸入 8...

52 回文平方數

52 回文平方數 問題描述 回文數是指從左向右念和從右向左唸都一樣的數。如12321就是乙個典型的回文數。給定乙個進製b 2 輸入說明 共一行,乙個單獨的整數b b用十進位制表示,比如18 輸出說明 每行兩個數字,第二個數是第乙個數的平方,且第二個數是回文數。注意 輸出時,這兩個數都應該以b進製表示...

基礎52 回文平方數

52 回文平方數 問題描述 回文數是指從左向右念和從右向左唸都一樣的數。如12321就是乙個典型的回文數。給定乙個進製b 2 輸入說明 共一行,乙個單獨的整數b b用十進位制表示,比如18 輸出說明 每行兩個數字,第二個數是第乙個數的平方,且第二個數是回文數。注意 輸出時,這兩個數都應該以b進製表示...