〔Fancy Zone〕质数与约数

题单介绍

# ![og](https://s21.ax1x.com/2024/09/29/pA12Z3F.jpg) **一、质数** 质数(Prime Number),又称素数,指在大于 1 的自然数中,除了 1 和它自身外,不能被其他自然数整除的数。 例如,2、3、5、7、11 等都是质数。 **质数的性质:** 1. 质数只有两个正因数(1 和它本身)。 2. 所有大于 10 的质数中,个位数只有 1、3、7、9。 **判断一个数是否为质数的方法:** 1. 试除法:从 2 到该数的平方根依次尝试能否整除该数,如果都不能整除,则该数为质数。 - 例如,判断 13 是否为质数,因为 √13 ≈ 3.6,所以只需尝试 2、3 是否能整除 13,均不能整除,所以 13 是质数。 **质数的筛选(埃氏筛法):** 可以通过筛选的方法找出一定范围内的所有质数。 基本思路:从 2 开始,将每个质数的倍数都标记为合数,剩下未被标记的就是质数。 ```python def sieve_of_eratosthenes(n): is_prime = [True] * (n + 1) is_prime[0] = is_prime[1] = False p = 2 while p * p <= n: if is_prime[p]: for i in range(p * p, n + 1, p): is_prime[i] = False p += 1 primes = [i for i in range(n + 1) if is_prime[i]] return primes ``` **二、约数** 约数,又称因数,指能够整除一个整数的数。 例如,6 的约数有 1、2、3、6。 **求一个数的约数的方法:** 1. 分解质因数法:将该数分解为质因数的乘积,然后通过组合质因数的方式得到所有约数。 - 例如,12 = 2² × 3,所以 12 的约数有 1、2、3、4、6、12。 2. 试除法:从 1 到该数的平方根依次尝试能否整除该数,能整除的数和其对应的商都是该数的约数。 **最大公约数(Greatest Common Divisor,GCD)** 指两个或多个整数共有约数中最大的一个。 常见求最大公约数的方法: 1. 欧几里得算法(辗转相除法):用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是 0 为止。此时的除数就是最大公约数。 ```python def gcd(a, b): while b!= 0: a, b = b, a % b return a ``` **最小公倍数(Least Common Multiple,LCM)** 指两个或多个整数公有的倍数中最小的一个。 求最小公倍数的方法:两个数的乘积等于这两个数的最大公约数与最小公倍数的积。 即:LCM(a, b) = a × b / GCD(a, b) 例如,求 12 和 18 的最小公倍数,先求其最大公约数为 6,所以最小公倍数为 12 × 18 / 6 = 36。 在信息学竞赛中,质数与约数的相关知识经常用于解决一些数论问题,如整数分解、因数个数计算、最大公约数和最小公倍数的求解等。熟练掌握这些知识对于提高解题能力和效率至关重要。 --- ###### *题单贡献者:* ###### *题目编排:[djxstc](https://www.luogu.com.cn/user/1020627)* ###### *笔记补充:[BunDragon126](https://www.luogu.com.cn/user/927203)* ###### 质数与约数笔记 &copy; Fancy Zone OI 版权所有 | 感谢上方贡献人员!

题目列表

  • 【模板】线性筛素数
  • [POI 2001 R1 / HAOI2007] 反素数
  • [NOIP 2009 提高组] Hankson 的趣味题
  • Prime Distance
  • 阶乘分解
  • [Violet] 樱花
  • Farey Sequence
  • [SDOI2008] 仪仗队
  • [CQOI2007] 余数求和