質數日介紹:
https://ppt.cc/fdMqtx
20190823除了是823炮戰紀念日之外,也是質數日,群組有人傳了這個新聞,問說有沒有人可以把這1000年所有的53個質數日日期跑出來,索性用Python來寫一下,一開始出來的日期有78個,debug才發現,我的程式把個位數字1也當成質數,再用and指令排除掉個位數字1是質數這個條件,就可以完整的跑出來了!
編號 日期
1 20000107
2 20000503
3 20010223
4 20010313
5 20031223
6 20060107
7 20070823
8 20100907
9 20130223
10 20190523
11 20190823
12 20300317
13 20360317
14 20400307
15 20400823
16 20480107
17 20600317
18 20660617
19 20700103
20 20700223
21 20700307
22 20700523
23 20721013
24 20910103
25 20930113
26 21000313
27 21000907
28 21050503
29 21320107
30 21330313
31 21360223
32 21870223
33 21890107
34 21990523
35 23000617
36 23010313
37 23100313
38 23970313
39 24021013
40 24050503
41 24090907
42 24270223
43 24350503
44 24501223
45 24900307
46 26001013
47 26070313
48 26150503
49 26190313
50 26931013
51 27020113
52 27080107
53 29331013
Python Code:
start=101
end=1232
def isprime(p):
for i in range(2,int(p**0.5)+1):
if (p%i)==0:
return 1 #合數
break
else:
return 0 #質數
flag=0
for i in range(1000):#應到1100
for j in range(1,13):#月份
for k in range(20000000+i*10000+j*100+1,20000000+i*10000+j*100+32,2):
digit=int(lp.log10(k))
ans=k
p=[]
r=[]
p.append(isprime(k))
for l in range(digit,0,-1):
p.append(isprime(k%(10**l)))
k=k%(10**l)
r.append(k) #存入個位數,注意1不是質數
q=set(p)
q=list(q)
if len(q)==1 and q[0]==0 and r[0]!=1:
flag+=1
print(flag,' ',ans)