求素數(質數)的幾種演算法對比

2022-06-25 03:30:16 字數 968 閱讀 9289

查詢指定範圍的自然數的所有質數,實現起來並不難,但是哪種演算法效率最高,速度最快才是重點,我列出幾種演算法:

1、將待判斷的值與小於它而且不小於2的所有數求餘數

public static listgetprimev1(int max)}}

if(!flag)

}system.out.println("迴圈次數:"+times);

return list;

}2、將待判斷的值與比它小的所有素數求餘數

public static listgetprimev2(int max)}}

if(!flag)

}system.out.println("迴圈次數:"+times);

return list;

}3、將待判斷的值與不大於它的平方根而且不小於2的所有數求餘數

public static listgetprimev3(int max)}}

if(!flag)

}system.out.println("迴圈次數:"+times);

return list;

}4、將待判斷的值與不大於它的平方根的所有素數求餘數

public static listgetprimev4(int max)}}

if(!flag)

}system.out.println("迴圈次數:"+times);

return list;

}針對以上四種演算法:

1)當我傳入引數為100的時候,得到的迴圈次數從上往下分別為:

1133、411、236 、181,他們消耗的時間很短,沒有可比性,所以可以換乙個大一點的引數測試;

2)當我傳入引數為1000000時,他們消耗的時間從上往下大概分別為:

150s,80s,0.8s,0.3s

從測試結果看,不同的演算法,計算效率就是差別很大,學好演算法,對於提高工作效率有很大的幫助。如有更好的演算法,歡迎指正和補充,謝謝。

求質數 素數 演算法思想

此演算法是網上查詢到的 覺得不錯 所以拿來與大家分享 1 求10000 以內的所有素數。素數是除了 1和它本身之外再不能被其他數整除的自然數。由於找不到乙個通項公式來表示所有的素數,所以對於數學家來說,素數一直是乙個未解之謎。像著名的 哥德 猜想 孿生素數猜想,幾百年來不知吸引了世界上多少優秀的數學...

求質數 素數 演算法思想

此演算法是網上查詢到的 覺得不錯 所以拿來與大家分享 1 求10000 以內的所有素數。素數是除了 1和它本身之外再不能被其他數整除的自然數。由於找不到乙個通項公式來表示所有的素數,所以對於數學家來說,素數一直是乙個未解之謎。像著名的 哥德 猜想 孿生素數猜想,幾百年來不知吸引了世界上多少優秀的數學...

Java求素數(質數)的幾種方法

比1大的整數中,除了1和它本身以外,不再有別的因數,這種整數叫做質數或素數 要判斷x是否為質數,就從2一直嘗試到x 1的做法效率是最差的!其實只要從2一直嘗試到 x,就可以了。因為因數都是成對出現的。比如,100的因數有 1和100,2和50,4和25,5和20,10和10。看出來沒有?成對的因數,...