约数,又称因数。整数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即为最小公约数

数学知识——约数(因数)相关推荐

  1. 0x32 数学知识-约数

    0x32 数学知识-约数 [HAOI2007]反素数ANT 反素数,是约数最多的最小正整数 令 g(x)g(x)g(x) 为正整数 xxx 的约数个数.例 g(1)=1,g(6)=4g(1)=1, g ...

  2. 0x32.数学知识 - 约数

    目录 一.约数 定义 算术基本定理的推论 求NNN的正约数集合 - 试除法 求1~N每个数的正约数集合 - 倍数法 AcWing198. 反素数 二.最大公约数 最大公约数与最大公倍数 更相减损术 l ...

  3. 算法基础课——第四章 数学知识(一)

    第四章 数学知识(一) 如无特殊说明,所有数均为正整数 质数 质数: 针对所有大于 111​​​ 的自然数来说,如果只包含 111​​ 和本身 这两个约数,就被称为质数,或者叫素数:否则被称为 合数. ...

  4. AcWing基础算法课Level-2 第四讲 数学知识

    AcWing基础算法课Level-2 第四讲 数学知识 您将学会以下数学名词 质数,试除法,埃式筛法,线性筛,辗转相除,算术基本定理,质因数分解,欧拉函数,快速幂,费马小定理,逆元,拓展欧几里得,一次 ...

  5. 算法基础课-数学知识

    数学知识 第四章 数学知识 数论 质数 约数 欧拉函数 欧拉定理与费马小定理 拓展欧几里得定理 裴蜀定理 中国剩余定理 快速幂 高斯消元 求组合数 卡特兰数 容斥原理 博弈论 Nim游戏 SG函数 第 ...

  6. Acwing - 算法基础课 - 笔记(数学知识 · 二)

    文章目录 数学知识(二) 欧拉函数 公式法 筛法 欧拉定理 快速幂 扩展欧几里得算法 中国剩余定理 数学知识(二) 这一小节主要讲解的内容是:欧拉函数,快速幂,扩展欧几里得算法,中国剩余定理. 这一节 ...

  7. Acwing - 算法基础课 - 笔记(数学知识 · 一)

    文章目录 数学知识(一) 质数 质数的判定 分解质因数 朴素思路 优化 筛选质数 朴素筛法 埃氏筛法 线性筛法 小结 约数 求一个数的所有约数 求约数个数 求约数之和 求最大公约数 数学知识章节,主要 ...

  8. 初二年级估算要不要用计算机,期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏!...

    原标题:期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏! 一年级 人教版一年级上册第一单元知识点汇总 1. 数一数 点数法:数数时,要按一定的顺序来数,从1开始,数到最后一个事物所对应的是 ...

  9. AcWing数学知识

    数学知识 质数 试除法O(n)O(\sqrt{n})O(n​) public static boolean isPrime(int x) {if (x < 2) return false;for ...

最新文章

  1. 山东大学教授建议:让博士生先回学校
  2. Python解决八皇后问题
  3. 基于Python的卷积神经网络和特征提取
  4. oracle表空间处理操作
  5. ESP8266 WiFi探针 MAC
  6. opengl加载显示3D模型AC类型文件
  7. C语言 条件编译(if )
  8. ubuntu linux下面运行《暗黑破坏神2》和英雄无敌3-死亡阴影
  9. oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...
  10. Dijkstra Algorithm (迪杰斯特拉算法)
  11. Hadoop系列之OutputCollector
  12. python在线怎么发音-Python如何实现文本转语音
  13. weak和assign的区别
  14. powerdesign新手入门详细教程
  15. B站在​港交所双重主要上市 陈睿:将扩大我们投资者基础
  16. 关于centos7重启报错:[sdb] Assuming drive cache: write through [sda] Assuming drive 解决如下
  17. c语言百变图形,百变图标app官方版-百变图标更换图标app下载v1.0.0-西西软件下载...
  18. nginx反向代理和正向代理
  19. 分享一个不知道从哪里下载的电子设计者的经验
  20. 亚马逊云科技风力发电厂在福勒岭启动了!

热门文章

  1. cv曲线面积的意义_【CV现状-3.1】图像分割
  2. 详解服务器CPU和GPU技术区别和联系
  3. 如何在Gitee创建仓库并上传文件
  4. 【敏捷办公学习必备软件推荐】
  5. 电脑小问题:C盘垃圾文件清理及扩容
  6. es6中的generator函数详解
  7. 特定领域知识图谱融合方案:文本匹配算法ERNIE-Gram单塔等诸多模型【_副本
  8. RHEL6.3x64 RHCS+Conga(Luci/ricci)+iscsi +CLVM+GFS+Apache配置
  9. 《缠中说禅108课》90:中阴阶段结束时间的辅助判断
  10. 其他计算机如何联网,局域网怎么连接其他电脑上网