要找出质数,可以采用以下几种方法:
埃拉托斯特尼筛法
将2到n之间的数字用表格形式写出来。
从最小的数2开始,如果这个数是质数,那么它的倍数就不可能是质数,于是把它的倍数都去掉。
再取下一个未筛选的数,重复上述步骤,直到所有小于或等于n的质数都找出来为止。
奇偶法
依赖于“奇数加奇数等于偶数”的性质。
对于小于n的数字,如果它是偶数,那么它肯定不是质数,只有奇数有可能是质数。
所以只要判断奇数是否为质数就可以了,从而大大减少判断次数。
筛法求质数
把从1开始的、某一范围内的正整数从小到大顺序排列,1不是质数,首先把它筛掉。
剩下的数中选择最小的数是质数,然后去掉它的倍数。
依次类推,直到筛子为空时结束。
试除法
从2开始,一直试着去除待判断的数,如果无法整除,则它是质数。
如果能被2整除,就再试3,依次类推,一直到这个数的平方根。
因为如果一个数有因子大于平方根,那么就一定有小于平方根的一个因子,所以只需要试到它的平方根就可以了。
循环法
从2开始到该数的平方根之间的所有整数去除这个数,如果能被整除,则该数不是质数,反之则是质数。
利用开平方
将需要判断的数的平方根存储在一个变量中,然后只需用这个变量与2到这个平方根之间的所有整数去除这个数来判断是否为质数。
优化后的算法
例如欧拉筛法和米勒-拉宾素数测试,它们能够更快的找出大数的质数因子,对密码学和网络安全有重要的应用。
查表法
编制质数表,按照自然数列,第一个数1不是质数,因此要除外,然后按顺序写出2至100的所有自然数,这些数中2是质数,把它留下,把2后面所有2的倍数划去,2后面的3是质数,接着再把3后面所有3的倍数划去,如此继续下去,剩下的便是100以内的全部质数。
这些方法各有优缺点,选择哪种方法取决于具体的需求和场景。例如,埃拉托斯特尼筛法适合找出一定范围内所有的质数,而试除法则适合快速判断一个数是否为质数。