信息学奥赛初赛天天练-37-CSP-J2021阅读程序-质数、合数、约数、约数个数、约数和、增加质因数对约数个数、约数和的影响
PDF文档公众号回复关键字:20240627
![](https://img2022.cnblogs.com/blog/404484/202211/404484-20221123185906168-1425738362.png)
质数
质数和合数是数学中对于自然数(不包括0和1)的两种重要分类
质数 (Prime Number)
一个大于1的自然数,除了1和它本身以外不再有其他因数的数称为质数
例如
2、3、5、7、11、13、17、19等都是质数
注意
质数只有两个正因数:1和它本身
合数
合数是指在大于1的整数中,除了能被1和本身整除外,还能被其他数(0除外)整除的数
4、6、8、9、10、12、14、15等都是合数
注意
合数至少有三个正因数,除1和本身以外还有至少一个正因数
唯一分解定理
唯一分解定理又称为算术基本定理,其性质是每个大于1的自然数N(非质数)均可以被分解且他们的分解形式是唯一的
任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1^a1 * P2^a2 * P3^a3 ...... Pn^an,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。这样的分解称为 N 的标准分解式
例如
18 = 2^1 * 3^2
约数
约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
例如
6的正约数有:1、2、3、6
10的正约数有:1、2、5、10
约数个数
每个合数都可以分解成质因子的幂次的乘积
H = p1^a1 * p2^a2 ....pn^an 其中 pi都是质数,ai是幂次,p1是最小的质数
约数的个数为(a1+1)*(a2+1)*...(an+1)
例题
18 = 2^1 * 3^2
约数的个数为(a1+1)*(a2+1) = (1+1) * (2+1) =2 * 3 =6
分析
18由2个质数组成,分别为2和3
2可以包括2^0和2^1 这2种情况(可能出现的情况包括2的0次幂,所以为幂次+1)
3可以包括3^0、3^1、3^2 这3种情况(可能出现的情况包括3的0次幂,所以为幂次+1)
根据乘法原理 2 * 3 =6种情况
2^0 * 3^0 = 1 * 1= 1
2^1 * 3^0 = 2 * 1= 2
2^0 * 3^1 = 1 * 3= 3
2^1 * 3^1 = 2 * 3= 6
2^0 * 3^2 = 1 * 9= 9
2^1 * 3^2 = 1 * 9= 18
增加质数对约数个数影响
1 原数为n,增加的是最小质数k 满足 n%k==0
30 =2^1 * 3^1 * 5^1
约数个数为(a1+1)*(a2+1)*(a3+1)=(1+1)*(1+1)*(1+1)=8
增加一个最小质数2
60 =2^2 * 3^1 * 5^1
约数个数为(a1+1)*(a2+1)*(a3+1)=(2+1)*(1+1)*(1+1)=3*2*2=12
观察规律,只有最小质数项有变化
(1+1) -->(2+1)
所以增加最小质数后的约数个数=增加前的约数个数/(1+1)*(2+1)
即 12 = 8 / 2 * 3
2 原数为n,增加的是最小质数k 满足 n%k!=0
15 = 3^1 * 5^1
约数个数为(a1+1)*(a2+1)=(1+1)*(1+1)=4
增加一个最小质数2
30 = 2^1 * 3^1 * 5^1
约数个数为(a1+1)*(a2+1)=(1+1)*(1+1)*(1+1)=8
观察规律,发现多了一个因数,约数个数为原来约数个数* 2
约数和
每个合数都可以分解成质因子的幂次的乘积
H = p1^a1 * p2^a2 ....pn^an 其中 pi都是质数,ai是幂次,p1是最小的质数
约数的和为(p1^0+p1^1+...p1^a1)*(p2^0+p2^1+...p2^a2)*...(pn^0+pn^1+...p2^an)
例如
12 =2^2*3^1
枚举约数
1 =2^0*3^0
2 =2^1*3^0
4 =2^2*3^0
3 =2^0*3^1
6 =2^1*3^1
12 =2^2*3^1
1+2+4=2^0*3^0 + 2^1*3^0 + 2^2*3^0=3^0 * (2^0+2^1+2^2)
3+6+12 = 2^0*3^1 + 2^1*3^1 + 2^2*3^1 = 3^1 * (2^0+2^1+2^2)
1+2+4+3+6+12=3^0 * (2^0+2^1+2^2) + 3^1 * (2^0+2^1+2^2) =(2^0+2^1+2^2)*(3^0+3^1)=28
例题
18 = 2^1 * 3^2
根据约数和公式
约数和=(2^0+2^1)*(3^0+3^1+3^2)=3 * 13 =39
枚举18的约数和=1+2+3+6+9+18=39
增加质数对约数和影响
1 原数为n,增加的是最小质数k 满足 n%k==0
30 =2^1 * 3^1 * 5^1
30的约数和=(2^0+2^1)*(3^0+3^1)*(5^0+5^1)=72
增加一个最小质数2
60 =2^2 * 3^1 * 5^1
60的约数和=(2^0+2^1+2^2)*(3^0+3^1)*(5^0+5^1)=168
观察规律
令 m=(3^0+3^1)*(5^0+5^1)
g[x]表示x的约数和
则
g[30]=(2^0+2^1)*m
g[60]=(2^0+2^1+2^2)*m=(2^1+2^2)*m+2^0*m=2(2^0+2^1)*m+m=2*g[30]+m
2 原数为n,增加的是最小质数k 满足 n%k!=0
15 = 3^1 * 5^1
约数和为 (3^0+3^1)*(5^0+5^1)=(1+3)*(1+5)=24
增加一个最小质数2
30 = 2^1 * 3^1 * 5^1
约数和为 (2^0+2^1)*(3^0+3^1)*(5^0+5^1)=(1+2)*(1+3)*(1+5)=72
观察规律
g[x]表示x的约数和
则
g[15]=(3^0+3^1)*(5^0+5^1)
g[30]=(2^0+2^1)*(3^0+3^1)*(5^0+5^1)
多出了1项(2^0+2^1),这项为1+k
所以g[30]=g[15]*(k+1)
作者:newcode 更多资源请关注纽扣编程微信公众号
从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习