质数素数是什么意思?最详细的解释

 杭州seo优化   2023-05-17 21:39   29 views 人阅读  0 条评论
摘要:

>正文质数素数是什么意思?最详细的解释发布时间:2020-04-1309:21:48点击:次作者:风雪来源:代代SEO分类:网站运营杂谈一、发文目的本文主要阐述素数的概念,以通俗易懂的方式形象的描

  > 正文

  质数素数是什么意思?最详细的解释

  发布时间:2020-04-13 09:21:48

  点击:次

  作者:风雪

  来源:代代SEO

  分类:网站运营杂谈

  一、发文目的

  本文主要阐述素数的概念,以通俗易懂的方式形象的描述素数和合数究竟代表什么意思,以及找到一种方法能够求得给定的数值范围内的素数。

  二、文章大纲

  1,素数的概念

  2,素数的形象的理解

  3,什么是合数

  4,为什么1不是素数

  5,如何求给定范围内的素数

  6,一个Python求素数的例子

  素数又称质数,英文名称是Prime number。

  三、文章内容

  1,素数的概念

  关于素数,也叫质数,从字面意思可以想象,这种数有着基本,本质,原子的意思,也就是说,这种数是不能够再拆分的,是一个基本的,独立的原子个体。素数的定义是指在除了1和此整数本身外,不能被其他自然数整除的数(1除外)。

  2,素数的形象的理解

  可以想象,有一堆苹果,n个。假设苹果是不可切割的,现在需要你去给这堆苹果等份分给若干人。

  有两种可能的结果,一种是可以再分成若干等份;一种是不能够再分了,苹果保存原样的一堆。

  针对第二种情况(保持原样,不能再分),这堆苹果可以看成下面两种情形:

  A,以单个苹果为一个个体,可以分成n个人,1(个)*n(人)

  B,以n个苹果为一个整体,可以分给1个人,n(个)*1(人);

  回到数的范畴,也就是说,如果一个整数n,只能被1或者自己整除,也就是说整数n只能表示为n=1*n,或者n=n*1的形式,即不能分成其他形式的等份了,那么这个数就叫做素数。

  形象的理解为:一堆苹果,还是原来的那堆苹果,没有改变。

  3,什么是合数

  接着上面素数的概念,相反的情况,如果一堆苹果可以再分成n=a*b的形式(a,b不等于1或者n),那么就称n为合数。合数这个词,本身也代表了本身是可以由几个数合在一起的意思。

  也以苹果为例,假设这堆苹果是15个,除了本身15这种状态之外,也可以分成3个一堆,共5堆(3*5)或者5个一堆,共3堆(5*3)这两种状态。即15不单单只能表示为15*1或者1*15,还可以表示成3*5或者5*3。也就是说,15除了被1和自己整除外,还可以被3或者5整除。

  4,为什么1不是素数

  其实,如果从本质的概念来说,1也可以称为素数,这个从上面的例子就可以看出。

  之所以现在不能将1看成素数,原因在于,如果将1看成素数了,那么会使得合数的概念不统一。

  合数,从上面第3点的分析,可以知道,合数n可以表示为n=a*b的形式(这里的a,b不等于1或者n)。

  既然n=a*b,那么a,b有两种状态,要么是素数,要么是合数。why

  因为,数本身就只有这两种状态:要么只能被1或者本身整除,要么除此之外还能被其他数整除。因此,a,b这两个数可能是素数,可能是合数。

  现在,我想对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个,或者更多。

  下面先给出一个结论:

  假设一个合数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实现的代码(求给定整数范围内的素数)   验证结果:

写在结尾:以上就是质数素数是什么意思?最详细的解释的详细内容,更多请关注【杭州SEO博客】其它相关文章!
本文地址:http://seo.youqingshuyuan.com/18123.html
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系我们。

 相关文章  关键词:

 发表评论


表情