請問各位大大 為什麼這段程式碼總是超時呢?
你這樣遇到大一點的數字,肯定超時的,
你有沒有發現你的 a010 也比別人慢很多,
去找幾種質數判定法來練習看看。
加油 ^_^
你這樣遇到大一點的數字,肯定超時的,你有沒有發現你的 a010 也比別人慢很多,去找幾種質數判定法來練習看看。加油 ^_^
後來我 加上時間來看到底花了多少時間
99999000 100000000
It cost 0.116392 sec
52
這題目說
輸入兩個正整數a,b(1<=a<=b<=100000000)。
保證b-a<=1000
我已經取最大了,只要不到0.2秒
這樣應該不至於會超時吧?
還是請問我哪邊誤會了呢?
還有你寫的 for j in range(2, int(math.sqrt(i)))
如果能略過偶數,時間也可省掉不少。
還有你寫的 for j in range(2, int(math.sqrt(i)))
如果能略過偶數,時間也可省掉不少。
我擋掉了2、3;5、7、11 還是不能ˊˋ
還有你寫的 for j in range(2, int(math.sqrt(i)))
如果能略過偶數,時間也可省掉不少。
import sysimport mathimport time
for inputValue in sys.stdin:tStart = time.time() # 計時開始startNumber, endNumber = inputValue.split()
result = []for i in range(int(startNumber), int(endNumber)+1):isPrime = Trueif i % 2 == 0:continueif i % 3 == 0:continueif i % 5 == 0:continueif i % 7 == 0:continueif i % 11 == 0:continue
for j in range(2, int(math.sqrt(i))):# print(str(i) + '-'+str(j)+','+str(i % j))if i % j == 0:isPrime = Falsebreakif isPrime:result.append(i)# print(' '.join([str(r) for r in result]))tEnd = time.time() # 計時結束print("It cost %f sec" % (tEnd - tStart)) # 會自動做近位print(str(len(result)))
我擋掉了2、3;5、7、11 還是不能ˊˋ
2%2=0 2是質數阿\
2,3,5,7,11 也都被你擋掉了