虽然用上面两种方法就可以算出200以内的所有质数,但如果要计算的数值特别大或者要计算的数的范围特别大的时候,上面两种方法的计算量都不小。
我初步了解了费马小定理及其公式在进行一个数的素性检查的时候,计算量会大大降低,计算时间会更短。
费马小定理是数论中的一个重要定理,在1636年提出。如果p是一个质数,a是一个整数,则a^p-a的得数一定是p的倍数。----理解自百度百科
我同时也了解了,这样验证速度虽然快,但存在费马骗子数,骗子数可以通过扩大a的取值来尽可能规避,但要是遇到卡迈克尔数就查不出了,比如561这样的合数。
那么,如何能够更快更准确的解决这个问题呢?我的设想是做一个两轮筛查:第一轮利用费马小定理的公式做快筛,结果里就算混有少量的合数也没有关系,我们接着进行第二轮筛选--第二轮将筛出的这些混着合数的候选数字们利用埃拉托斯特尼筛法做精确筛选,将合数排除出去。