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


现在 , 我想对a,b做如下操作:如果是素数 , 则保持不变;如果是合数 , 那么继续分解为两个数的乘积的形式 。
这样 , 一直持续操作下去 , n=a*b , 最终会以n=p1*p2*p3…的形式呈现(其中 , p1,p2,p3…都是素数) 。即一个合数 , 最终都会以素数的乘积表示 。
现在回到本题的疑问 , 为什么1不是素数?
因为:1由于本身的特殊性(任意个1相乘还是1) , 导致一个合数n=p1*p2*p3 , 会有无数个表示式 。即合数n , 可以表示为:
n=p1*p2*p3
n=p1*p2*p3*1
n=p1*p2*p3*1*1
n=p1*p2*p3*1*1*1
……
所以 , 为了达到合数的表达式的唯一性 , 就人为的将1排除在了素数之外 。
5 , 如何求给定范围内的素数 到这里 , 已经知道了素数和合数 。那么如果想要求某个给定的数范围内的素数有哪些 , 应该怎么求 。
比如 , 如何求10以内的素数?
【什么是素数和质数,深度解读这两者之间的区别】根据常识 , 可以容易的想到10以内的素数有:2,3,5,7
如果不是10 , 而是100以内的素数呢?
难道是依次的去数 , 2,3,5,7,11,13,17,19…
如果不是100 , 而是1000以内的素数呢?
看来人为的靠自己的理解去数 , 会把自己数晕 , 不是解决问题的根本方法 。
那么应该怎么去解决?
我认为 , 还是得从素数的概念入手:只能被1和自己本身整除的数 。
也就是说 , 除了1和本身 , 不能被其他数整除的数 。或者说 , 只要找到了一个能够被1和本身之外的数整除 , 那么就可以判定这个数就不是素数 。
下面的目标 , 就是努力去找到这样的数 。
先想一下不是素数的数是什么数?答案很明显 , 就是合数 。合数有什么性质?合数可以表示为若干个素数的乘积 。
既然是要求n以内的素数 , 那么肯定n以内的素数一定是在n以内;n以内的合数也是在n以内 。n以内的合数可以表示为若干个素数的乘积 , 这里的素数也肯定是在n以内 。
那么可以确定的知道n以内的某个合数必会至少能够被n以内的一个素数整除 。如果能够找到这样的能够被n以内的合数整除的最大的素数K , 那么就可以得到这样一组素数集(从2开始 , 最大值是K) , 将n以内的整数 , 依次与这组素数中的素数进行求余运算 , 根据求余结果是否是0 , 来判断整数是否是合数 。即求余的结果不是0的整数就是素数了 。
下面的问题是:已知整数范围n , 如何求得能够被n以内的合数整除的最大的素数?
还是从合数的概念出发 , 一个合数必然可以表示为若干个素数的乘积 。
至于合数分解成的素数的个数多少 , 这个就不确定了 , 可能是2个 , 也可能是3个 , 或者更多 。

推荐阅读