#20799: 質數判定法


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
a121. 質數又來囉 | From: [1.168.27.130] | 發表日期 : 2020-03-08 11:25

部落格裡有質數判定法,改一下就能用

 

https://chiendavid.blogspot.com/

 
#20816: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)

學校 : 不指定學校
編號 : 99133
來源 : [163.24.139.119]
最後登入時間 :
2022-11-25 16:33:41
a121. 質數又來囉 | From: [163.24.13.126] | 發表日期 : 2020-03-09 09:07

部落格裡有質數判定法,改一下就能用

 

https://chiendavid.blogspot.com/


參考了演算法筆記,和您的a010質數判定解法。
此題如果先建立10000以內的質數表,

再從a與b的範圍內直接刪除2的倍數與3的倍數,是不是就會少掉大半時間。

我還是吃了好多次TLE

 
#20817: Re:質數判定法


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
a121. 質數又來囉 | From: [1.168.21.237] | 發表日期 : 2020-03-09 10:12

google 一下  

6n+1或6n-1

 
#20854: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)

學校 : 不指定學校
編號 : 99133
來源 : [163.24.139.119]
最後登入時間 :
2022-11-25 16:33:41
a121. 質數又來囉 | From: [36.239.192.16] | 發表日期 : 2020-03-14 10:31

google 一下  

6n+1或6n-1

原來測資還是有b-a超過1000的,


這就是瘋狂TLE的原因。

寫pytohn的人,要記得遇到b-a>1000時,直接輸出0就會過

還有考慮0,1,2,3這些數字的情況,就可以AC了

 
#20856: Re:質數判定法


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
a121. 質數又來囉 | From: [61.223.58.102] | 發表日期 : 2020-03-14 10:43

  >>>  寫pytohn的人,要記得遇到b-a>1000時,直接輸出0就會過

 

這個講法,您覺得合理嗎。

 
#20857: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)

學校 : 不指定學校
編號 : 99133
來源 : [163.24.139.119]
最後登入時間 :
2022-11-25 16:33:41
a121. 質數又來囉 | From: [36.239.192.16] | 發表日期 : 2020-03-14 11:15

  >>>  寫pytohn的人,要記得遇到b-a>1000時,直接輸出0就會過

 

這個講法,您覺得合理嗎。

的確不合理,

但這是此題用python避免TLE的一種方法

 
#21191: Re:質數判定法


10811124@stu.cmsh.khc.edu.tw (立峰陳)

學校 : 國立旗美高級中學
編號 : 108792
來源 : [27.240.168.65]
最後登入時間 :
2023-03-17 00:06:48
a121. 質數又來囉 | From: [203.71.250.13] | 發表日期 : 2020-04-28 12:57

  >>>  寫pytohn的人,要記得遇到b-a>1000時,直接輸出0就會過

 

這個講法,您覺得合理嗎。

 

import math
def prime(n):
    for i in range(1,int(math.sqrt(n))+1):
        if n%i==0 and i!=1:
            return False
            break
    return True
a=input()
while a:
    try:
        c=[]
        b=a.split(' ')
        for i in range(int(b[0]),int(b[1])+1):
            if prime(i):
                c.append(i)
        if int(b[1])-int(b[0])>1000:
            print('0')
        else:
            print(len(c))
        a=input()
    except:
        break
 
#21192: Re:質數判定法


10811124@stu.cmsh.khc.edu.tw (立峰陳)

學校 : 國立旗美高級中學
編號 : 108792
來源 : [27.240.168.65]
最後登入時間 :
2023-03-17 00:06:48
a121. 質數又來囉 | From: [203.71.250.13] | 發表日期 : 2020-04-28 12:57

  >>>  寫pytohn的人,要記得遇到b-a>1000時,直接輸出0就會過

 

這個講法,您覺得合理嗎。

 

import math
def prime(n):
    for i in range(1,int(math.sqrt(n))+1):
        if n%i==0 and i!=1:
            return False
            break
    return True
a=input()
while a:
    try:
        c=[]
        b=a.split(' ')
        for i in range(int(b[0]),int(b[1])+1):
            if prime(i):
                c.append(i)
        if int(b[1])-int(b[0])>1000:
            print('0')
        else:
            print(len(c))
        a=input()
    except:
        break
請問錯在哪裡????



 
ZeroJudge Forum