→ chihungtzeng:質數表建完後用 binary search 查是不是質數 06/05 22:43
恩 來研究一下好了
(小弟新手)
→ loveme00835:同樓上, 全找出來試試 06/05 22:45
→ tkcn:都有 prime_v 了,連 binary search 都不用才對 06/05 22:46
用 二分搜尋法 去找 好像比較快的樣子 ?
→ loveme00835:疑, 沒看到 XD 06/05 22:47
→ loveme00835:if(prime_v[i]*prime_v[i]>k) break; 改掉先用一個變 06/05 22:49
→ loveme00835:數存k開根號的結果, 直接prime_v[i]跟root_of_k比 06/05 22:49
剛剛改了~但是效果好像不明顯
→ tkcn:能改進的其實還很多 :p 06/05 22:55
煩請煩高手指點了
→ loveme00835:inner loop跑的次數太多了, 到root_of_k就好, 不要把 06/05 22:55
→ loveme00835:所有輸入都存起來, 每讀一個馬上輸出結果就好 06/05 22:56
可是題目規定要先全部輸入再輸出
※ 編輯: cory8249 來自: 111.255.233.233 (06/05 23:13)
→ firejox:才10^6而已 就用Eratosthenes篩法就好了呀 06/05 23:10
恩 那我重寫一個試試看好了
→ loveme00835:除非它是測你輸入的時間點跟輸出時間點, 否則都是用IO 06/05 23:14
→ loveme00835:重導向, 最後程式結束作檔案比對而已 06/05 23:15
原來如此... 恕小弟無知 >"<
※ 編輯: cory8249 來自: 111.255.233.233 (06/05 23:26)
※ 編輯: cory8249 來自: 111.255.233.233 (06/05 23:27)
推 suhorng:開一個 1000001 的陣列, 把質數對應的項目標示出來 06/05 23:27
→ suhorng:這樣對於每個詢問 直接查詢對應的項目是否有被標記就好 06/05 23:28
→ loveme00835:樓上說的像是: bool is_prime[1000001]; [0] [1]不用 06/05 23:29
終於AC了 !!
非常感謝各位的幫忙
※ 編輯: cory8249 來自: 111.255.233.233 (06/05 23:46)
推 tropical72:>> 用 x*x > i 取代 x > sqrt(i) 06/06 02:38
→ tropical72:沒人懷疑過這點嗎?這部份我實際上傳是較慢的. 06/06 02:38
→ tropical72:最後是用 target = (int)ceil(sqrt((double)x))); 06/06 02:39
→ firejox:篩法:git://gist.github.com/1009686.git 06/06 11:29
→ firejox:其實我覺得改那部份不會快多少@@ 06/06 11:31
→ firejox:x*x>i的部份 06/06 11:31
推 yoco315:大數字用 Miller-Rabin test 測 2 7 61 XD 神速 06/07 01:32
→ firejox:回yoco大 樓上的wiki似乎被砍掉了@@ 06/07 18:46
推 cole945:可以直接完算78500個質數塞進source code嗎XD? 06/08 00:20
→ tropical72:@cole945: stack 恐沒那麼大可以塞 06/08 07:12
推 cole945:塞global呀. 而且原本的prime_v就已經是local變數了呀 囧 06/09 02:23