质数(素数)是指只能被1和它本身整除的数,1不是质数;
如何判断一个数是否为质数呢。
首先我想到的是用循环,让它从2开始,直到本身,循环过程中,如果遇到余数为0,就跳出循环。很显然这样的方式很不可取,当这个数是一个比较大的质数时,就会慢慢的循环到本身,对计算机的能力是一个挑战,数字足够大的时候(不用多大)就会奔溃。
所以此处如何优化算法,成为关键。
这里将过程中多余的,可以直接将一定不为质数的数挑选出来,不进行考虑,其中把非数字和小于2的数去除,然后将偶数排除,最后得到的数都是不能被二整出的,将循环范围设置在3到检测数的平方根(以平方根左右是对称的,所以后面的数相当于前面对应的数,不需要再重复计算),每次加2(跳过偶数)。
这种方法较未优化的方法高效,这种通过逆向的算法很有效率。