约数个数定理:

对于一个大于1正整数n可以分解质因数:

则n的正约数的个数就是

其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。

定理简证:

首先同上,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak,
由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1)个......pk^ak的约数有(ak+1)个。
故根据乘法原理:n的约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1)。

例题:

例题:正整数378000共有多少个正约数?
解:将378000分解质因数378000=2^4×3^3×5^3×7^1
由约数个数定理可知378000共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。

约数和定理:

对于一个大于1正整数n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,
那么n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)个正约数的和为
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)

定理证明:

证明:若n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1
同理可知,pk^ak的约数有:pk^0, pk^1, pk^2......pk^ak ;
实际上n的约数是在p1^a1、p2^a2、...、pk^ak每一个的约数中分别挑一个相乘得来,
可知共有(a₁+1)(a₂+1)(a₃+1)…(ak+1)种挑法,即约数的个数。
由乘法原理可知它们的和为
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)

例题:

例题:正整数360的所有正约数的和是多少?
解:将360分解质因数可得
360=2^3*3^2*5^1
由约数和定理可知,360所有正约数的和为
(2^0+2^1+2^2+2^3)×(3^0+3^1+3^2)×(5^0+5^1)=(1+2+4+8)(1+3+9)(1+5)=15×13×6=1170
可知360的约数有1、2、3、4、5、6、8、9、10、12、15、18、
20、24、30、36、40、45、60、72、90、120、180、360;则它们的和为
1+2+3+4+5+6+8+9+10+12+15+18+20+24+30+36+40+45+60+72+90+120+180+360=1170

所有因子个数τ(n)与所有因子的和σ(n)都是乘(积)性函数。

定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。

定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)。

定理1:设p是一个素数,a是一个正整数,那么

σ(n)=1+p+p^2+……+p^a=【p^(a+1)-1】/(p-1)

τ(n)=a+1

定理2:设正整数n有素因子分解 n =(p1^α1)*(p2^α2)*(p3^α3)* ....... *(pk^αk),那么

σ(n)=【(p1^α1)-1】/(p1-1) * 【(p2^α2)-1】/(p2-1) * .....  *【(pk^αk)-1】/(pk-1)

τ(n)=(α1+1)*(α2+1)*(α3+1)*......*(αk+1)

求因子个数:

int prime[maxn],nprime;
int vis[maxn];  void getprime(){nprime = 0;memset(vis,0,sizeof(vis));for(int i = 2; i <= 450; i++){int t = 450/i;for(int j = 2; j <=t; j++)vis[i*j] = 1;}for(int i = 2; i <= 450; i++){if(!vis[i])prime[nprime++] = i;}
}int factor_count(int n){  int ans = 1,sum;  int k = sqrt(n*1.0);  for(int i = 0; prime[i] < k; i++){  if(n % prime[i] == 0){  sum = 0;  while(n % prime[i] == 0){  sum++;  n /= prime[i];  }  ans *= (a+1);  }  }  if(n > 1)  ans *= 2;  return ans;
}  

求因子和:

int prime[maxn],nprime;
int vis[maxn];void getprime(){nprime = 0;memset(vis,0,sizeof(vis));for(int i = 2; i <= 450; i++){int t = 450/i;for(int j = 2; j <=t; j++)vis[i*j] = 1;}for(int i = 2; i <= 450; i++){if(!vis[i])prime[nprime++] = i;}
}int pow_mod(int a,int n,int MOD){int ans = 1;while(n){if(n&1)ans = (ans*a)%MOD;n >>= 1;a = (a*a)%MOD;}return ans;
}int factor_sum(int n){int ans = 1,sum;int k = sqrt(n*1.0);for(int i = 0; prime[i] < k; i++){if(n % prime[i] == 0){sum = 0;while(n%prime[i] == 0){sum++;n /= prime[i];}ans *= (pow_mod(prime[i],sum+1,MOD)-1)/(prime[i]-1);}}if(n > 1)ans *= ans(n*n-1)/(n-1);return ans;
}

约数定理(约数个数定理,约束和定理)相关推荐

  1. 四方定理 数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

    /* 四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示.我们可以通过计算机验证其在有限范围的正确性.对于大数,简单的循环嵌套是不适宜的.下面的代码给出了一种分解方案.请仔细 ...

  2. 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)

    文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...

  3. 数论(三)——约数(约数个数,约数和,公约数)

    目录 试除法求约数 求约数个数 约数之和 欧几里得算法 试除法求约数 试除法求一个数的所有约数,思路与判断质数的思路一样,优化的方法也是一样的,这里就不再赘述,没有看过我之前关于质数的博客可以点这里. ...

  4. 密码学基础——辗转相除法,费马小定理,欧拉定理,裴蜀定理,中国剩余定理

    文章主要根据百度百科和维基百科相关相关知识点整理而成! 辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法.它的具体做法是:用较小数除较大数 ...

  5. 数论四大定理(欧拉定理、费马小定理、中国剩余定理、威尔逊定理)

    前置知识 同余 假设 a,ba,ba,b 都是整数,如果 nnn 是一个正整数,且存在整数 kkk 使得 a−b=k×na−b=k \times na−b=k×n,则称 a,ba,ba,b 模 nnn ...

  6. 数论考试题(b) 求约数的约数的最大个数

    题意:求1~n范围里约数的约数的个数加起来最多的是哪个数 及其总数 题解: /* 对一个数质因数分解 首先要知道两个公式:约数的个数的公式,和约数的约数的个数的公式(详见题解) 然后发现:质因数分解后 ...

  7. 扒一扒那些叫欧拉的定理们(六)——九点圆定理的证明

    早点关注我,精彩不迷路! 在前面的文章中,我们介绍了空间几何内的欧拉定理及其扩展,上一篇中又讲到了平面几何欧拉定理,相关内容请戳: 扒一扒那些叫欧拉的定理们(五)--平面几何欧拉定理的证明 扒一扒那些 ...

  8. 约数个数定理约数和定理

    1.如果我们要求一个数的所有因数的个数会怎么去求呢? 首先想到最简单的方法就是暴力求解就可以.当然数据小.或者测试数据少就很简单就可以过了. 2.如果求一个区间内的数的所有因数的个数呢?或者求一个区间 ...

  9. 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?

    一.试除法求约数 主要思想:由于当n/a=b时,a和b都是n的约数,即约数总是成对出现,可以在一次循环中同时找到i和n/i两个约数,只需要循环n/i次就能找到所有约数. 例题:求一个数的所有约数,并将 ...

最新文章

  1. 腾讯信息流热点挖掘技术实践
  2. 数据挖掘系列(2)--关联规则FpGrowth算法
  3. Docke安装MariaDB
  4. tf.Variable 和 tf.get_variable的区别(2)
  5. 事物与持久化_跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现...
  6. C++ Primer中文版(第4版 特别版)
  7. from robot.api import logger
  8. SpringBoot分页组件PageHelper介绍及使用
  9. 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新2)...
  10. Cocostudio生成的UI,触摸屏蔽问题
  11. FL Studio20.9中文语言版安装下载 附带免费插件
  12. java服装销售系统课程设计_毕业论文(设计)基于javaweb的服装销售管理系统的设计与实现.doc...
  13. 【解决】jsPDF之长图片生成PDF(分页,失真)
  14. oracle中锁机制,Oracle锁的基本机制
  15. MySQL高级语句(一)---常用查询、视图、null值
  16. 综合日语第一册第五课
  17. 2345浏览器兼容性设置在哪里
  18. 建设工程项目全寿命周期管理是指_工程项目全寿命周期管理.ppt
  19. python对erp系统有帮助吗_ERP系统的优点
  20. 河南移动AI面试 面经

热门文章

  1. 一款超好的省市区三级联动插件citypicher的使用(数据分从数据库获取或从js文件获取)
  2. 《消费者行为学》读后感_20171129
  3. 内存中常见的错误及解决方法
  4. 武汉公办专科学校以计算机为特长,专业计算机技术公办学校
  5. 自旋芯片什么时候应用到计算机,史上首次!硅量子计算机芯片的完整设计公布...
  6. 爬取腾讯视频 xpath方式
  7. MySQL错误:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  8. ios布局 分为左右两块_iOS 13 隐秘的细节④:系统组件·下
  9. 【剧透高亮】最最最完整剧透加剧情详细解析
  10. 高新技术企业的申报条件及要求