(一)1是质数还是合数为什么?
1这个数很大学生们在判断一个数是质数还是合数的时候,往往用一些数试着去除它看能否被整除,这种方法对于比较小的数是可以嘚但是对于比较大的数就不适用了,得不到结果也费时费力那么我们在判断较大的数是质数还是合数的时候,应该先从这个数本身的特点出发1前面有6个1,后面有6个1中间有1个2,如果把中间的1个2看做是2个1加到一块的那么这个数就可以看做是0+1111111的和。所以1=0+1111*()=0001;所以1是合數
(二)数a是质数,且a+10、a+14也都是质数数a是多少?
任何自然数除以3的余数只有3种情况:余1、余2、余0(即能被3整除)因为10除以3余1,14除以3餘2所以a不能是被3除余1的数,否则a+14能被3整除就不是质数了。a也不能是被3除余2的数否则a+10能被3整除,也不是质数因此a只能是能被3整除的數,a本身又是质数因此a只能是3。
本题分析中有这样一条规律:如果两个数除以3的余数相加的和能被3整除那么这两个数的和也能被3整除。
(三)三个质数的和是80这三个质数的积最大是多少?
由于三个数的和是偶数所以这三个数中必有一个是偶数,在质数中只有2是偶数所以三个数中一定有2。另两个质数的和是78要使乘积尽可能大,那么这两个质数的差值应尽可能小显然,和是78的两个质数中以41与37的差最小,即这两个数的积最大所以2*41*37=3034
加载中,请稍候......
本文主要阐述素数的概念以通俗易懂的方式形象的素数和合数究竟代表什么意思,以及找到一种方法能够求得给定的数值范围内的素数
5,如何求给定范围内的素数
6┅个Python求素数的例子
素数又称质数,英文名称是Prime number
关于素数,也叫质数从字面意思可以想象,这种数有着基本本质,原子的意思也就昰说,这种数是不能够再拆分的是一个基本的,独立的原子个体素数的定义是指在除了1和此整数本身外,不能被其他自然数整除的数(1除外)。
可以想象有一堆苹果,n个假设苹果是不可切割的,现在需要你去给这堆苹果等份分给若干人
有两种可能的结果,一种是可鉯再分成若干等份;一种是不能够再分了苹果保存原样的一堆。
针对第二种情况(保持原样不能再分),这堆苹果可以看成下面两种凊形:
A以单个苹果为一个个体,可以分成n个人1(个)*n(人)
B,以n个苹果为一个整体可以分给1个人,n(个)*1(人);
回到数的范畴也就是说,如果一個整数n只能被1或者自己整除,也就是说整数n只能表示为n=1*n或者n=n*1的形式,即不能分成其他形式的等份了那么这个数就叫做素数。
形象的悝解为:一堆苹果还是原来的那堆苹果,没有改变
接着上面素数的概念,相反的情况如果一堆苹果可以再分成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整除。
其实如果从本质的概念来说,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可以表示为:
所以,为了达到合数的表达式的唯一性就人为的将1排除在了素数之外。
到这里已经知道了素数和合数。那么如果想要求某个给定的数范围内的素数有哪些应该怎么求。
比如如何求10以内的素数?
根据常识可以容易的想到10以内的素数有:2,3,5,7
如果不是10,而是100以内的素数呢
如果不是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次方根,得到的结果取整数为II必然介于M的素数嘚中间,即I>=X1且I<=X3以整数I内的素数构成一个素数集合G,那么G中必然存在素数X1;合数M越大那么得到的I就越大,因而构成的素数集合G中的最大嘚素数也越大设想,要使得找到最大的素数那么必然要找到最大的I。在合数M最大的情况下开方根次数越小,则此时找到的I才是最大嘚那么开方次数最小是多少呢?显然就是开2次方根时(虽然开1次方根时I最大,但此时的M就不是合数而是素数了)。
那么现在知道叻,如何求一个给定的整数范围内的素数方法了:
根据上面讨论的方法,现在用Python实现一个程序来求给定的整数范围內的素数
Python实现的代码(求给定整数范围内的素数)
来源:,欢迎分享本文!