约数个数定理
来源:互联网 发布:淘宝售后人工客服电话 编辑:程序博客网 时间:2024/05/22 01:52
对于一个大于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个。
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>#include<math.h>#include<queue>using namespace std;long a[105];long b[105];long c[105];int cnt;void getyue(long n){ cnt=0; for(int i=2;i<=sqrt(n);i++) { if(n%i==0) { a[cnt++]=i; n=n/i; i--; } } a[cnt]=n;}int getresult(){ int sum=0; for(int i=0;i<=cnt;i++) { if(a[i]==a[i+1]) { b[sum]++; } else{ b[sum]++; sum++; } } return sum;}int getac(){ int t=getresult(); int sum=1; for(int i=0;i<t;i++) { sum=sum*(b[i]+1); } return sum;}int main(){ int t; cin>>t; while(t--){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); long n; cin>>n; getyue(n); int ac=getac(); cout<<ac<<endl; cnt=0; } return 0;}
阅读全文
0 0
- 约数个数定理
- 约数个数定理
- 约数个数定理
- 约数个数定理 和 约数和定理
- 约数个数定理and约数和定理
- 约数定理(约数个数定理,约束和定理)
- 约数个数定理及实现
- hdu 1492 约数个数定理
- 约数个数定理(hihoCoder144周)
- HDU 6069 Counting Divisors (约数个数定理)
- HDU6069-Counting Divisors(约数个数定理)
- hdu6069Counting Divisors(约数个数定理)
- HDU 6069 Counting Divisors【约数个数定理】
- poj1845(唯一分解定理,等比数列求和,约数个数公式)
- HDU6069-Counting Divisors 约数个数定理+素数分解
- HDU 6069 Counting Divisors【素数筛】【约数个数定理】
- bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
- 约数个数
- javascript浏览器对象之计时器
- D3.js中Force-Directed Graph详解
- 二叉树的遍历
- 36. Valid Sudoku
- 二维码的扫描
- 约数个数定理
- 图的基础概念
- WordLadder
- HTML之:CSS控制的首页初级布局
- PAT-1027.在霍格沃茨找零钱(20)
- 浅谈C++中的构造函数与析构函数
- 57. 局域网控制者:Proxy 服务器
- 实现QQ按下返回键最小化
- HDU 1712 ACboy needs your help (分组背包)