数学知识——约数(因数)
约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
约数的判定:试除法
众所周知,除了可能有一对同样的数相乘等于x以外,其余的一对约数一个小于sqrt(x)、一个大于sqrt(x)
vector<int> get_divisors(int x)
{vector<int> res;for (int i = 1; i <= x / i; i ++ ) //基本数学常识 只用除到sqrt(x)if (x % i == 0){res.push_back(i);if (i != x / i) res.push_back(x / i); //排除一种情况即i^2=n时}sort(res.begin(), res.end());return res;
}
约数的应用1:求约数个数/求约数之和
定理:对于一个数N,可以被分解质因数为(其中pi为质因数,ai为指数)N=(p1a1) * (p2a2) * (p3a3) ……
那么N的约数个数为(a1+1) * (a2+1) * (a3+1)……
那么N的约数之和为(p10+p11+……+p1a1)*(p20+p21+……+p2a2) …… *(pk0+pk1+……+pkak)
原因:
- 约数个数:只要是N的约数,分解出来的质因数就一定是与N的质因数的数字相同或者少几个、而且每个质因数的指数范围是0~ai。因为可以取到0也可以取到ai,所以每个质因数有(ai+1)种选法。
- 约数之和:把式子按乘法分配律展开可以发现是()+()+……+()约数个数个括号相加
所以约数个数即为各种选法相乘
AW870部分代码节选
需要使用哈希,因为单单只用普通数组存质数的话有很大的空间浪费,而且在数据足够大的时候可能溢出
unordered_map<int, int> primes; //需要使用哈希,因为单单只用普通数组存质数的话有很大的空间浪费,而且在数据足够大的时候可能溢出while (n -- ){int x;cin >> x;for (int i = 2; i <= x / i; i ++ )while (x % i == 0) //分解质因数{x /= i;primes[i] ++ ;}if (x > 1) primes[x] ++ ;}LL res = 1;
求约数个数:for(pair<int, int> p : primes) res = res * (p.second + 1) % mod;求约数之和:for (pair<int, int> p : primes){LL a = p.first, b = p.second; //底数、指数LL t = 1;while (b -- ) t = (t * a + 1) % mod; //初始:t=1//执行一次:t=a+1//执行两次:t=a^2+a+1//三次:t=a^3+a^2+a+1 res = res * t % mod;}cout << res << endl;
约数的应用2:求最大公约数
求最大公约数主要用辗转相除法。而要用到辗转相除法要用到这个定理:
gcd(a,b)=gcd(b, a mod b ); (其中gcd()返回最大公约数)
int gcd(int a, int b)
{return b ? gcd(b,a%b) : a;
} //当b被约成0的时候,此时对应的a即为最小公约数
数学知识——约数(因数)相关推荐
- 0x32 数学知识-约数
0x32 数学知识-约数 [HAOI2007]反素数ANT 反素数,是约数最多的最小正整数 令 g(x)g(x)g(x) 为正整数 xxx 的约数个数.例 g(1)=1,g(6)=4g(1)=1, g ...
- 0x32.数学知识 - 约数
目录 一.约数 定义 算术基本定理的推论 求NNN的正约数集合 - 试除法 求1~N每个数的正约数集合 - 倍数法 AcWing198. 反素数 二.最大公约数 最大公约数与最大公倍数 更相减损术 l ...
- 算法基础课——第四章 数学知识(一)
第四章 数学知识(一) 如无特殊说明,所有数均为正整数 质数 质数: 针对所有大于 111 的自然数来说,如果只包含 111 和本身 这两个约数,就被称为质数,或者叫素数:否则被称为 合数. ...
- AcWing基础算法课Level-2 第四讲 数学知识
AcWing基础算法课Level-2 第四讲 数学知识 您将学会以下数学名词 质数,试除法,埃式筛法,线性筛,辗转相除,算术基本定理,质因数分解,欧拉函数,快速幂,费马小定理,逆元,拓展欧几里得,一次 ...
- 算法基础课-数学知识
数学知识 第四章 数学知识 数论 质数 约数 欧拉函数 欧拉定理与费马小定理 拓展欧几里得定理 裴蜀定理 中国剩余定理 快速幂 高斯消元 求组合数 卡特兰数 容斥原理 博弈论 Nim游戏 SG函数 第 ...
- Acwing - 算法基础课 - 笔记(数学知识 · 二)
文章目录 数学知识(二) 欧拉函数 公式法 筛法 欧拉定理 快速幂 扩展欧几里得算法 中国剩余定理 数学知识(二) 这一小节主要讲解的内容是:欧拉函数,快速幂,扩展欧几里得算法,中国剩余定理. 这一节 ...
- Acwing - 算法基础课 - 笔记(数学知识 · 一)
文章目录 数学知识(一) 质数 质数的判定 分解质因数 朴素思路 优化 筛选质数 朴素筛法 埃氏筛法 线性筛法 小结 约数 求一个数的所有约数 求约数个数 求约数之和 求最大公约数 数学知识章节,主要 ...
- 初二年级估算要不要用计算机,期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏!...
原标题:期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏! 一年级 人教版一年级上册第一单元知识点汇总 1. 数一数 点数法:数数时,要按一定的顺序来数,从1开始,数到最后一个事物所对应的是 ...
- AcWing数学知识
数学知识 质数 试除法O(n)O(\sqrt{n})O(n) public static boolean isPrime(int x) {if (x < 2) return false;for ...
最新文章
- 山东大学教授建议:让博士生先回学校
- Python解决八皇后问题
- 基于Python的卷积神经网络和特征提取
- oracle表空间处理操作
- ESP8266 WiFi探针 MAC
- opengl加载显示3D模型AC类型文件
- C语言 条件编译(if )
- ubuntu linux下面运行《暗黑破坏神2》和英雄无敌3-死亡阴影
- oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...
- Dijkstra Algorithm (迪杰斯特拉算法)
- Hadoop系列之OutputCollector
- python在线怎么发音-Python如何实现文本转语音
- weak和assign的区别
- powerdesign新手入门详细教程
- B站在​港交所双重主要上市 陈睿:将扩大我们投资者基础
- 关于centos7重启报错:[sdb] Assuming drive cache: write through [sda] Assuming drive 解决如下
- c语言百变图形,百变图标app官方版-百变图标更换图标app下载v1.0.0-西西软件下载...
- nginx反向代理和正向代理
- 分享一个不知道从哪里下载的电子设计者的经验
- 亚马逊云科技风力发电厂在福勒岭启动了!
热门文章
- cv曲线面积的意义_【CV现状-3.1】图像分割
- 详解服务器CPU和GPU技术区别和联系
- 如何在Gitee创建仓库并上传文件
- 【敏捷办公学习必备软件推荐】
- 电脑小问题:C盘垃圾文件清理及扩容
- es6中的generator函数详解
- 特定领域知识图谱融合方案:文本匹配算法ERNIE-Gram单塔等诸多模型【_副本
- RHEL6.3x64 RHCS+Conga(Luci/ricci)+iscsi +CLVM+GFS+Apache配置
- 《缠中说禅108课》90:中阴阶段结束时间的辅助判断
- 其他计算机如何联网,局域网怎么连接其他电脑上网