• 约数,整除


    约数定义:约数,又称因数。整数a除以整数b(b≠0)除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数,记作b a。(其实中间的整除符号应该是|,但是由于这个竖线在数学其他领域用得太多,容易混淆,学学高德纳的做法,把作为整除符号。而且反斜杠让有一种右边除左边的感觉,更容易把整除式理解正确,不然这个概念感觉挺绕的。)

    整除的性质
    1.若a,bc,则ac。(传递性?)
    2.若a,ac 等价于 对于任意整数x,y,都有 a(bx+cy)
    3.设m ( eq) 0,那么a,等价于 (m * a) (m * b) (同乘性?)
    4.设整数x,y满足ax+by=1,且a ,b ,那么有(a*b)
    证明:

    因为a n,b n
    所以 (a * b) (b * n) ,(a * b) (a * n)
    所以 (a * b) ( y * b * n+ x * a * n )
    所以(a * b) n * (y * b +x * a)
    所以 ( a * b)
    证毕
    5.若b =q*d+r,则 d|b的充要条件是 d|r
    6.设整数x的个位数为a,判断其是否能被n整除:
    (frac{x-a}{10} - m*a=n*k(k in N) \ 则x=n[10k+ frac{(10m+1)a}{n} ],)
    要使x能被n整除,只要 $ frac{10m+1}{n} $为自然数。
    ~~源于百度百科,不会证明

    算术基本定理推论:1.N的正约数集合可以写作{ $ p^{b_1}_1 p^{b_2}_2 cdots p^{b_m}_m $ } $ ,0 le b_i le c_i$

    $qquad qquad qquad $ 2. N的正约数个数为 $ (c_1+1)* (c_2+1)* cdots * (c_m+1) = prod _{i=1}^{m} (c_i+1) $

    $qquad qquad qquad $ 3. N的所有正约数的和为 $$ (1+p_1+p^2_1 + cdots + p^{c_1}_1 )* cdots *(1+p_m+ p^2_m + cdots + p^{c_m}_m ) = prod _{i=1}^{m} sum _{j=0}^{c_i} (p_i)^j $$

    求N的正约数集合(试除法)
    对于一个非完全平方数,它的约数总是两两出出现的。若(d ge sqrt N) 是N的约数,则$ N/d le sqrt{N}$ 也会是N的约数,所以我们只要扫描 1~ $ sqrt N$的数d,尝试d能否整除N,如果可以,那么d和N/d都是N的约数。时间复杂度 $ O sqrt N) $。

    int factor[1000], m = 0;
    int t = sqrt(n);
    rep(i, 1, t) {
    	if(n % i == 0) {
         factor[++m]=i;
         if(i!=n/i) factor[++m]=n/i;
    	}
    }
    

    试除法的推论: 一个整数的约数个数上界为(2sqrt N)
    求1~N每个数的正约数集合(倍数法)
    对于每个数d,1~N中以d为约数的数就是d的倍数d,2d,3d,···(lfloor N/d floor *d)。时间复杂度为(O(N+N/2+N/3+cdots+N/N)=O(Nl og N))

    vector<int>factor[1000];
    rep(i,1,n){
    	int t=n/i;
    	rep(j,1,t)
    	 factor[i*j].push_back(i);
    } 
    

    倍数法的推论:1~N每个数约数总和约为N log N。

    本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15055208.html

  • 相关阅读:
    再谈用java实现Smtp发送邮件之Socket编程
    Android TextView设置个别字体样式
    Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)
    Angular团队公布路线图,并演示怎样与React Native集成
    [LeetCode]Remove Element
    poj2481 Cows
    Spark SQL 源代码分析之Physical Plan 到 RDD的详细实现
    MySQL5.6 怎样优化慢查询的SQL语句 -- 慢日志介绍
    容器使用笔记(List篇)
    【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement
  • 原文地址:https://www.cnblogs.com/QQ2519/p/15055208.html
Copyright © 2020-2023  润新知