素数又称质数,英文: prime number 。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做
素数(质数);否则称为
合数(
规定1既不是质数也不是合数)。
素数(质数)的性质:
(1)质数p的约数只有两个:1 和 p。
(2)初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。
(3)质数的个数是无限的。
(4)质数的个数公式f(n)是不减函数(即随着n的增大,f(n)的值是不会减少的,只能增加或者不变)。
(5)若n为正整数,在 n
2 到 (n+1)
2 之间至少有一个质数。
(6)若n为大于或等于2的正整数,在n到 n! 之间至少有一个质数。( n! = 1*2*3……*(n-1)*n,即n的阶乘)
(7)若质数p为不超过 n(n≥4)的最大质数,则 p > n/2 。
(8)所有大于10的质数中,个位数只有1,3,7,9。(因为大于等于10的整数中,个位数为0、2、4、6、8都能被2整除,个位数为5的都能被5整除,显然这些整数都是合数)
知识延申:
1、最小的素数是2,最小的合数是4。
【注】最小的素数和最小的合数都是偶数。
2、大于2的素数都是奇数,2是素数中唯一的偶数.
3、1既不是素数也不是合数。
4、大于1的正整数中,不是素数就是合数。
5、素数不全是奇数,也可以是偶数,如:2.
--------------------------------------------------------------------------------------------------------
判断一个正整数 n 是否是素数,根据上面的定义和性质,我们首先排除一些特殊情况(例如1、2可以单独处理),然后使用循环从2开始到 n的算术平方根(如果不是整数就上取整,即不小于n的算术平方根的最小整数) 去对 n 求余数,如果其中有一个余数为0,则说明n不是素数(是合数),使用break退出循环。否则没有余数为0的就是素数。 过程中可以使用一个变量来辅助标记是否是素数,例如变量 isPrime 开始初始化为 对,如果检测到不是素数(是合数或者1)就修改变量值为 错。
另外,如果编写一个专门判断一个数是否为素数的函数就更好了。以后就可以重复使用了 。
我们还可以使用上面的性质8对程序进行优化,即判断一个大于等于10的正整数是否是素数,首先看它个位数是不是1、3、7、9,如果是就去测试,如果不是就直接得出结果不是素数。这样的话,我们要找出两个正整数n和m之间的所有素数,就大大减少了时间。