#21726: 非建表,用最純粹直觀的方式來判斷


roger.sly.sky@gmail.com (Jones Epoch)

學校 : 不指定學校
編號 : 119519
來源 : [140.112.24.126]
最後登入時間 :
2020-07-17 15:57:22
a121. 質數又來囉 | From: [140.112.25.66] | 發表日期 : 2020-07-12 18:23

先來想想甚麼是質數,就是除了1和自己之外,其他所有的數字都不能整除他。

部分程式碼如下(以c語言呈現):

int j = 2;

if (i == 1)                            //這裡是小陷阱,如果沒有這一小段,那凡是起點從1開始的,最終的值數總和都會多1

                isprime = false;                 

while(j * j <= i)                  //從j==2開始測試 i 值是否能被整除,若能被整除,則此 i 值並非一個質數

            {

                if (i % j == 0)

                {

                    isprime = false;

                    break;

                }

                j++;

            }

但這樣的寫法有一個缺點,就是時間複雜度至少會是n^2(當然,尤其遇到無限輸入值的題目時,時間複雜度會更大)

而利用建表法,雖然會浪費許多空間,但卻能在最多n^2的時間內處理掉這題

 

 

 
ZeroJudge Forum