学习笔记10-18

(Hugecolor{Red}{10.18}) (Large{color{Blake}{主题:约数}})

主要内容:

.整除

  1. (a=b imes c),则称(a)(b)整除,或(b)整除(a),记作(amid b)

  2. (a=qb+r,(0le r< left| b ight|)),记(r=amod b)

  3. 整除的性质:

  • (a|b)(a|c),则(forall x,y),有(a|xb+yc)
  • (a|b)(b|c),则(a|c)
  • (m e0),则(a|b),当且仅当(ma|mb)
  • (a|b)(b|a),则(a=pm b)

.约数

  1. 算数基本定理的推论

对于正整数N......

  • N的正约数集合:

[{{p_1^{b_1}p_2^{b_1}...p_m^{b_m}}} ]

  • N的正约数个数:

[prodlimits_{i=1}^m(c_i+1) ]

  • N的所有正约数的和:

[prodlimits_{i=1}^mleft(sumlimits_{j=0}^{c_i}(p_i^j) ight) ]

  1. 求N的正约数集合——试除法:
  • 扫描(d=1simsqrt{N})尝试是否(d|N),若能,则(d)(N/d)都是N的约数。复杂度:(O(sqrt{N}))
  1. 试除法的推论
  • 一个整数N的约数上限个数为(2 sqrt{N})
  1. (1sim{N})每个数的正约数集合——倍数法
  • (forall d,1 sim N)中以(d)为约数的数就是(d,2d,3d,...,leftlfloor{N/d} imes d ight floor)
  • 时间复杂度:(O(NlogN))

Code:

vector<int>factor[500010]
for(int i=1;i<=n;i++)
  for(inr j=1;i*j<=n;j++)
	factor[i*j].push_back(i);
for(int i=1;i<=n;i++)
{
	for(int j=0;j<factor[i].size;k++)
  		printf("%d",factor[i][j]);
  	puts(" ");
}
  
  1. 倍数法的推论:

.最大公约数与最小公倍数

性质:

  1. (a|m)(b|m),则(operatorname{lcm}(a,b)|m)
  2. (d|a)(b|m),则(d|gcd(a,b))
  3. (operatorname{lcm}(ma,mb)=m imesoperatorname{lcm}(a,b)).
  4. (mathcal{color{Red}{important}})

[a imes b=gcd(a,b) imes operatorname{lcm}(a,b) ]

可用此条性质求出(gcd(a,b))后用(a imes b/gcd(a,b))(operatorname{lcm}(a,b))

.最大公约数的求法

方法一:用唯一分解定理

先分解质因数,然后求最大公约数。

令:

[a=p_1^a1 imes p_2^a2 imes... imes p_m^am ]

[b=p_1^b1 imes p_2^b2 imes... imes p_m^bm ]

[gcd(a,b)=p_1^{min(a1,b1)} imes p_2^{min(a2,b2)} imes... imes p_m^{min(am,bm)} ]

方法二:九章算术·更相减损术

(forall a,bin N,age b,)(gcd(a,b)=gcd(b,a-b)=gcd(a,a-b))

(forall a,bin N,)(gcd(2a,2b)=2 imes gcd(a,b))

方法三:欧几里得算法

(mathcal{color{Red}{important}})

[forall a,bin N,b e 0,gcd(a,b)=gcd(b,amod b) ]

Code:

int gcd(int a,int b)
{
	return (b==0)?a:gcd(b,a%b);
}

方法四:二进制算法

(a=b,gcd(a,b)=a;)否则,分情况讨论

  1. (a)(b)均为偶数,(gcd(a,b)=2 imes gcd(a/2,b/2);)
  2. (a)为偶数,(b)为奇数(gcd(a,b)=gcd(a/2,b);)
  3. (b)为偶数,(a)为奇数(gcd(a,b)=gcd(a,b/2);)

内心戏:

没啥捷径。记好结论多推推公式才有正解。

高精冲冲冲!

这玩意儿太难写了。一百多行。以后再也不写了

原文地址:https://www.cnblogs.com/Sure042/p/note10-18.html