#20799: 質數判定法


asnewchien@gmail.com (david)


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

 

https://chiendavid.blogspot.com/

#20816: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)


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

 

https://chiendavid.blogspot.com/


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

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

我還是吃了好多次TLE

#20817: Re:質數判定法


asnewchien@gmail.com (david)


google 一下  

6n+1或6n-1

#20854: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)


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)


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

 

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

#20857: Re:質數判定法


yaushu0306@gmail.com (Yaoshu)


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

 

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

的確不合理,

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

#21191: Re:質數判定法


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


  >>>  寫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 (立峰陳)


  >>>  寫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
請問錯在哪裡????