#26396: HELP!!!


zhengyouli547@gmail.com (hahaha)

學校 : 高雄市立高雄高級中學
編號 : 134898
來源 : [223.139.151.14]
最後登入時間 :
2021-09-19 15:23:51
a121. 質數又來囉 | From: [42.75.48.167] | 發表日期 : 2021-08-04 18:12

用範例測資測 41ms 所以建表應該沒問題 (可以這樣看嗎?

以下質數表

x=[2,3]

for c in range(3,10000,2):     #忽略偶數

    i=int(c**(1/2))+1            #測到平方根加一

    for g in range(3,i+1):       #本來想用(3,i+1,2)感覺會比較快,但不知道為什麼會缺項

        if c%g==0:

            break

        if g==i:

            x=x+[c]

以下主程式

 

while True:

    try:

        a,b=map(int,input().split());t=0

        if a > b:

            a,b=b,a

        if a==2:

            t+=1                                 #避開a==2不然下面的range間隔不能為2

        if a%2==0:

            a=a+1                               #避開a為偶數不然下面的range間隔不能為2

        for n in range(a,b+1,2):          #忽略偶數

            if n in x:

                t+=1

        print(t)

    except:

 

        break

問題 1:為什麼質數表間隔為2會缺項

      2:想請教可以怎麼加速呢?(本人新手不會用太難的用法

TLE:9S

噴小力點  謝謝!!!!!!

 
#26427: Re:HELP!!!


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a121. 質數又來囉 | From: [39.12.39.78] | 發表日期 : 2021-08-06 14:54

用範例測資測 41ms 所以建表應該沒問題 (可以這樣看嗎?

以下質數表

x=[2,3]

for c in range(3,10000,2):     #忽略偶數

    i=int(c**(1/2))+1            #測到平方根加一

    for g in range(3,i+1):       #本來想用(3,i+1,2)感覺會比較快,但不知道為什麼會缺項

        if c%g==0:

            break

        if g==i:

            x=x+[c]

以下主程式

 

while True:

    try:

        a,b=map(int,input().split());t=0

        if a > b:

            a,b=b,a

        if a==2:

            t+=1                                 #避開a==2不然下面的range間隔不能為2

        if a%2==0:

            a=a+1                               #避開a為偶數不然下面的range間隔不能為2

        for n in range(a,b+1,2):          #忽略偶數

            if n in x:

                t+=1

        print(t)

    except:

 

        break

問題 1:為什麼質數表間隔為2會缺項

      2:想請教可以怎麼加速呢?(本人新手不會用太難的用法

TLE:9S

噴小力點  謝謝!!!!!!


1. 因為如果i是偶數,如果間隔設成2,g永遠是奇數,g==i一定是False。所以if g==i可以改成if g==i or g==i-1

 

 
ZeroJudge Forum