约数和倍数的性质
1.常对象2.类为什么要传引用3.为什么要用const修饰某个对象?4.nth_element算法5.sprintf函数和sscanf函数6.scanf为什么比cin要快?7.矩阵旋转8.C++中的位运算9.std::ios::sync_with_stdio(0) 加速
10.约数和倍数的性质
11.对于质数的研究12.最大公约数和最小公倍数13.sort函数中的第三个参数:自定义排序方式14.排序15.大根堆和小根堆的介绍16.next_permutation17.线性dp:大盗阿福(打家劫舍)18.线性dp:最长上升子序列19.线性dp:最长公共子序列20.线性dp:最长公共子串21.宏定义define的用法22.算法比赛中常用的快读约数(Divisors)
约数是指能整除某个整数的其他整数。例如,对于整数 ( a ),如果存在整数 ( b ) 使得 ( a = b*c ),那么 ( b ) 就是 ( a ) 的约数。
性质:
- 1 和自身是每个整数的约数: 每个整数 ( a ) 都有至少两个约数:1 和 ( a ) 本身。
- 约数的范围: 如果 ( d ) 是 ( n ) 的一个约数,则 ( d <=sqrt(n))。这意味着寻找 ( n ) 的约数时,只需要在 1 到 sqrt(n)范围内搜索。
- 完全平方数的约数个数为奇数: 如果 ( n ) 是一个完全平方数,那么它的约数个数一定是奇数,因为完全平方数的平方根只有一个。
倍数(Multiples)
倍数是指某个整数的整数倍数。如果 ( a ) 是 ( b ) 的倍数,则存在整数 ( c ) 使得 ( a = b \times c )。
性质:
- 倍数的性质: 如果 ( b ) 是 ( a ) 的倍数,那么 ( a ) 也是 ( b ) 的约数。
- 倍数之间的关系: 如果 ( a ) 是 ( b ) 的倍数,那么 ( ka )(其中 ( k ) 是任意整数)也是 ( b ) 的倍数。
- 最小公倍数(LCM): 如果 ( a ) 和 ( b ) 是两个整数,则 LCM(a,b) 是同时是 ( a ) 和 ( b ) 的倍数的最小正整数。
示例和应用:
- 如果 ( a = 12 ),它的约数包括 ( 1, 2, 3, 4, 6, 12 )。
- 如果 ( b = 5 ),它的倍数包括 ( 5, 10, 15, 20,......)。
在数学和计算机科学中,理解和应用约数和倍数的性质对于解决整数分解、公约数和公倍数、最大公约数(GCD)、最小公倍数(LCM)等问题非常重要。
以下是找出n的所有约数的C++代码示例:
int find_divisors(int n, int a[]) { //作为数组下标的索引 int index = 0; //不写成k*k<=n是因为k比较大时会超出long long的数据范围 for (int k = 1; k <= n / k; k++) { if (n % k == 0) { a[index++] = k; //约数成对出现,但是要注意一下k=n/k可能会重复出现。(防止完全平方数的同一个约数重复出现) if (n / k != k) a[index++] = n / k; } } return index; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!