雖然沒辦法壓到6ms (AC (36ms, 76KB)),
但小弟我有個不用建質數表就可以AC的解題方法:
以 259308 這個數字為例,我們從 2 開始對這個數字進行除法,除到無法整除時,就將除數加上 1:
259308 ÷ 2 = 129654
129654 ÷ 2 = 64827
此時可以發現 64827 已經無法被 2 整除,接下來改用 3:
64827 ÷ 3 = 21609
21609 ÷ 3 = 7203
7203 ÷ 3 = 2401
此時可以發現 115463 已經無法被 3 整除,接下來原本應該用 4 當除數,但可以發現,這個數字絕對不是 4 的倍數,因為在除以 2 時已經把質因數 2 的部分除掉了;
依此類推,所以其實並不用建表,只要從 2 一直除下去,直到原本的數字變成 1 ,然後在計算過程中紀錄曾經可以整除的數字有幾個就可以了;
過程中無法一次都無法整除的數字就是合數或不是原數字的因數的質數。
我們把剛剛的計算繼續完成,接下來的 4 、 5 、 6 都無法整除2401:
2401 ÷ 7 = 343
343 ÷ 7 = 49
49 ÷ 7 = 7
7 ÷ 7 = 1
運算結束,
可以發現,過程中可以整除該數的有 2 、 3 、 7 ,所以應該輸出「259308 : 3」。
小弟的解題方式,如有錯誤請不吝指正,謝謝指教 m(._.)m
雖然沒辦法壓到6ms (AC (36ms, 76KB)),
但小弟我有個不用建質數表就可以AC的解題方法:
以 259308 這個數字為例,我們從 2 開始對這個數字進行除法,除到無法整除時,就將除數加上 1:
259308 ÷ 2 = 129654
129654 ÷ 2 = 64827
此時可以發現 64827 已經無法被 2 整除,接下來改用 3:
64827 ÷ 3 = 21609
21609 ÷ 3 = 7203
7203 ÷ 3 = 2401
此時可以發現 115463 已經無法被 3 整除,接下來原本應該用 4 當除數,但可以發現,這個數字絕對不是 4 的倍數,因為在除以 2 時已經把質因數 2 的部分除掉了;
依此類推,所以其實並不用建表,只要從 2 一直除下去,直到原本的數字變成 1 ,然後在計算過程中紀錄曾經可以整除的數字有幾個就可以了;
過程中無法一次都無法整除的數字就是合數或不是原數字的因數的質數。
我們把剛剛的計算繼續完成,接下來的 4 、 5 、 6 都無法整除2401:
2401 ÷ 7 = 343
343 ÷ 7 = 49
49 ÷ 7 = 7
7 ÷ 7 = 1
運算結束,
可以發現,過程中可以整除該數的有 2 、 3 、 7 ,所以應該輸出「259308 : 3」。
小弟的解題方式,如有錯誤請不吝指正,謝謝指教 m(._.)m
我用你的方法拿16ms,328KB