題目大意:
數字n在d進製下是不是雙重素數。雙重素數是本身和倒數皆為素數的數。
實現:判斷n是否為素數。如果不是,輸出no,否則將該數在d進製下倒過來再化為十進位制數,判斷是否為素數。如果是,輸出yes,否則輸出no.
做這道題目的時候我們需要注意以下兩點:
1>內建函式int可以把字串從指定的進製轉換成十進位制
2>在檢驗是否是整型的時候,要注意0和1,這兩個直接返回否
import math
defcheck
(num)
:if num <=1:
return
0 flag =
1for x in
range(2
,round
(math.sqrt(num))+
1):if num % x ==0:
flag =
0return flag
return flag
defchange
(num, radix)
: result =
''while
(num !=0)
: temp = num % radix
result =
str(temp)
+ result
num = num //radix
return result
if __name__ ==
"__main__"
:while
(true):
line =
input()
.split(
" ")
iflen
(line)
<2:
break
num =
int(line[0]
) radix =
int(line[1]
)if check(num)==1
: rever = change(num, radix)
rever = rever[::
-1] rever =
int(rever, radix)
if check(rever)==1
:print
("yes"
)else
:print
("no"
)else
:print
("no"
)
PAT甲級真題1015 可逆質數
給定兩個整數 nn 和 dd,如果 nn 是乙個質數,並且將 nn 轉化為 dd 進製表示後,再進行反轉,得到的新數字轉化為十進位制表示後如果也是乙個質數,則稱 nn 在 dd 進製系統中,是乙個可逆質數。例如,n 73,d 10n 73,d 10,則 7373 是質數,其十進位制表示反轉後為 37...
浙大pat甲級 1024
可用3個vector來進行處理,先將輸入的數字都壓入到第1第2個vector中,從i 0到k迴圈判斷是否為對稱數,如果不是對稱數則將其與倒轉數相加,並將得到的每一位數加入到第三個vector的頭部,並將新的第三個vector重新賦值給第一第二,直到該數為對稱數或i k結束迴圈。ac include ...
浙大PAT甲級 1039
一開始想到用map 但是會超時。由於題目中的名字由三個字母和乙個數字組成,因此有26 26 26 10種,因此可以用hash來做。使用setmm max max 26 26 26 10 5 同時輸入名字時也應改為char s 5 scanf來輸入。ac include include include...