什么是素数和质数,深度解读这两者之间的区别( 三 )


下面先给出一个结论:
假设一个合数M可以分解为3个素数的乘积 , M=X1*X2*X3(X1<=X2<=X3) , 那么对M进行开3次方根 , 得到的结果取整数为I , I必然介于M的素数的中间 , 即I>=X1且I<=X3 。以整数I内的素数构成一个素数集合G , 那么G中必然存在素数X1;合数M越大 , 那么得到的I就越大 , 因而构成的素数集合G中的最大的素数也越大 。设想 , 要使得找到最大的素数 , 那么必然要找到最大的I 。在合数M最大的情况下 , 开方根次数越小 , 则此时找到的I才是最大的 。那么开方次数最小是多少呢?显然就是开2次方根时(虽然开1次方根时 , I最大 , 但此时的M就不是合数 , 而是素数了) 。
那么 , 现在知道了 , 如何求一个给定的整数范围内的素数方法了:

    首先 , 对给定的整数 , 求平方根 , 得到I1(取整数);然后 , 找到I1范围内的所有的素数 , 构成一个集合G接着 , 依次将给定的整数范围内的整数 , 对集合G的素数 , 依次取模 , 若结果是0 , 那么说明这个整数是合数 , 则排除之;否则就是素数 , 保留;以上收集的素数就是给定的整数范围内的所有的素数 。
6 , 一个Python求素数的例子 根据上面讨论的方法 , 现在用Python实现一个程序来求给定的整数范围内的素数 。
Python实现的代码(求给定整数范围内的素数)
验证结果:

推荐阅读