分析理解:x的每一个约数都是由x的若干个质因数的积构成. 再根据乘法原理,每个质因数Pi的选择可以是0~Ni个,所以上述结论成立.…
原题 就是让你求\(\sum\limits_{i=1}\sum\limits_{j=1}d(ij)\)(其中\(d(x)\)表示\(x\)的因数个数) 首先有引理(然而并没有证明): \(d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)=1]\) 带到原式里得到: \(ans=\sum\limits_{i=1}\sum\limits_{j=1}\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)=1]\) 利用\…
洛谷P3327 [SDOI2015]约数个数和 洛谷P4619 [SDOI2018]旧试题 要用到这个性质,而且网上几乎没有能看的证明,所以特别提出来整理一下. \[ d(AB) = \sum_{x|A} \sum_{y|B} [\gcd (x,y) = 1] \] (看上去比较不可思议对吧) 右侧的枚举,一部分因子算多了(比如当 \(\gcd(x,y)=1\) 且额外有 \(x|B,y|A\) 时,可以枚举出 \(x*y = y*x\) ),一部分因子又没有算(比如当 \(\gcd(A,B)…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * pow*(p2, b) * pow(p3, c) * ... 则其约数个数为:num(x) = (a+1) * (b+1) * (c+1) *... 推导: 由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1)个…
算法提高 约数个数   时间限制:1.0s   内存限制:512.0MB      输入一个正整数N,输出其约数的个数. 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,12.共6个.   #include<stdio.h> int main(){ int n; ; scanf("%d",&n); ) ; ;i<=n/;i++){ ){ sum++; } } printf();//任何数本身为其一个约数 }…
对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数. 所以,n以内的反质数即为不超过n的约数个数最多的数. 怎样计算约数个数? 约数个数定理:对于一个大于1正整数n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,则n的正约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1) .其中a1.a2.a3…ak是p1.p2.p3,…pk的指数.   所以,只需枚举一个数…
下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} a_{\frac n d} \] 双重因子 \[ \sum_{k | n} \sum_{j | k} a_{k, j} = \sum_{k | n} \sum_{j | \frac n k} a_{jk, k} \] \[ \sum_{n | k} \sum_{k | j} a_{k, j} = \…
https://ac.nowcoder.com/acm/contest/907/B t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 分析: 根据约数和定理:对于一个大于1正整数n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个, 暴力算出每一个数的约数的个数,超时! 根据唯一分解定理,我们知道每一个数都可以用质因子的积表示,而约数的个数只与指数有关! 我们知道pn>…
算法提高 约数个数 时间限制:1.0s 内存限制:512.0MB 输入一个正整数N (1 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,12.共6个 import java.util.Scanner; public class 约数个数 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int n = sc.nextInt(); int count=0; fo…
Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   Output T行,每行一个整数,表示你所求的答案.   Sample Input 2 7 4 5 6 Sample Output 110 121 HINT 1<=N, M<=50000 1<=T<=50000   这篇blog讲得很不错http://blog.codebursts.co…