素數是只有1和本身能整除的整數。所以在求素數的時候,要將素數與1到素數本身中間的所有整數都相除,看是否有整除的數,如果有,那肯定不是素數了。但是從算法上考慮,為了減少重復量,開平方后面的數就不用相除了,因為a/b(平方數)=c(小一點的數),同樣a/c=b。舉例說明:
25,開平方以后是5,那么整除2~5就可以了,如果有滿足條件的,就是素數。
這樣做可以減少循環次數,素數是因子為1和本身, 如果數c不是素數,則還有其他因子,其中的因子,假如為a,b.其中必有一個大於sqrt(c) ,一個小於sqrt(c) 。所以m必有一個小於或等於其平方根的因數,那么驗證素數時就只需要驗證到其平方根就可以了。即一個合數一定含有小於它平方根的質因子。
再比如:24的因數有1、2、3、4、6、8、12、24
按定義應該用2-23去除,但經過分析上面的數可以發現
1×24、2×12、3×8、4×6
如果2、3、4是某個數的因數,那么另外幾個數也是,反之也一樣
所以為提高效率,可以只檢查小於該數平方根的那些數,如24的平方根大於4小於5,檢查2-4就可以了!