码迷,mamicode.com
首页 > 其他好文 > 详细

小于等于N的全部整数与N关于gcd(i,N)的那些事

时间:2018-02-16 19:25:01      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:pos   tis   htm   pre   存在   rac   log   整数   blog   

相关问题1: 求小于等于N的与N互质的数的和。即∑ i (gcd(i,N)=1, N>=i>0)

                  依据N的规模能够有非常多种方法。这里我介绍一个比較经典的方法

 先说下这个结论:假设 gcd(n,i)=1则 gcd(n,n-i)=1 (1<=i<=n)
 这个很好理解吧,对于随意两个数a,b a%s==0,b%s==0(a>b)

那么(a-b)%s肯定也是零。

所以呢 gcd(n,i)==1则gcd(n,n-i)必须也为1 假设为s(s!=1)

那么gcd(n,n-(n-i))肯定也不是1啦
 于是问题变的很easy
 ANS=N*phi(N)/2
 i,n-i总是成对出现,而且和是n
 以下的说明能够让你消除反复的疑虑
 由于:
 n=2*i->i=n/2
 1.假设n是奇数。那么n!=2*i,自然也不存在n-i=i和反复计算之说
 2.假设n是偶数,n=2*i成立,gcd(n,n/2)必定为n的一个因子,这个因子为1当且仅当n==2
 于是对于n>2的偶数,绝对不存在gcd(n,n/2)=1所以更别说什么反复计算了
 对于n==2
 ans=2*1/2=1
 正好也满足
 所以得到终于公式:
 ans=N*phi(N)/2

 

相关问题2:求gcd(i,N)的和,即∑gcd(i,N) ,(N>=i>0)

                 最直观的方法就是求N次gcd加起来,呵呵我开个玩笑的,N略微大一点就没实用了。以下说说正规的解法吧

设函数g(n) = gcd(i,n) (1<=i<=n),对于随意给定的i 。

g(1) = 1 ,g(n)=g(m1)*g(m2) (n=m1*m2 且 (m1, m2)= 1)。由积性函数定义,g是积性函数。由详细数学上的结论,积性函数的和也是积性的。

所以f(n) = ∑gcd(i, n)也是积性函数。n>1时n能够被唯一分解 n=p1^a1*p2^a2*...*ps^as,因为f(n)是积所以f(n) = f(p1^a1)*f(p2^a2)*...f(pr^ar)。

所以仅仅要求f(pi^ai)就好,假设d是n的一个约数。那么1<=i<=n中gcd(i,n) = d的个数是phi(n/d),即n/d的欧拉函数

f(pi^ai) =  Φ(pi^ai)+pi*Φ(pi^(ai-1))+pi^2*Φ(pi^(ai-2))+...+pi^(ai-1)* Φ(pi)+ pi^ai *Φ(1)

     = pi^(ai-1)*(pi-1) + pi*pi^(ai-2)*(pi-1)....+pi^ai

     =  pi^ai*(1+ai*(1-1/pi))

接下来把各个项乘起来OK


相关问题3:求1到N的全部和N互质的数的乘积对N取模

               有这种结论,对于1,2,4,答案为N-1,其余的4的倍数答案为1。质数答案为N-1,其余的若为偶数则除以2后再推断素因子的个数,奇数则直接推断,多余一个素因子答案为1。仅仅有一个素因子答案为N-1; 同样的素因子不反复计数。

小于等于N的全部整数与N关于gcd(i,N)的那些事

标签:pos   tis   htm   pre   存在   rac   log   整数   blog   

原文地址:https://www.cnblogs.com/zhchoutai/p/8450361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!