相关问题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)的那些事的更多相关文章

  1. 用二进制方法求两个整数的最大公约数(GCD)

    二进制GCD算法基本原理是: 先用移位的方式对两个数除2,直到两个数不同时为偶数.然后将剩下的偶数(如果有的话)做同样的操作,这样做的原因是如果u和v中u为偶数,v为奇数,则有gcd(u,v)=gcd ...

  2. JS 随机整数

    <script>   function GetRandomNum(Min,Max){   var Range = Max - Min;   var Rand = Math.random() ...

  3. Math.random取随机整数

    Math.random可以随机获取0-1的数字,今天用的需要给id随机赋值,小数不好控制,就只取整. 网上很多是 int i=(int)(Math.random()*100): 报错: 后找到 var ...

  4. Shell系列(27)- 条件判断之两个整数比较

    两个整数之间比较 Liunx中,都是字符型,但是加了数值比较的选项,所以自动将他们转换成了整数型进行比较,不需要对这些参数进行变量转换或者重新声明 测试选项 作用 整数1 -eq 整数2 判断整数1是 ...

  5. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  6. 《明解c语言》已看完,练习代码此奉上

    2016年9月20日至2016年11月12日,从学校图书馆借来的<明解c语言>看完了. 大三第一个学期,前8周,有c语言程序设计的课.课本是学校里的老师编写出版的,为了压缩空间,减少页面, ...

  7. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  8. java中的小数的取整的几种函数

    Math类中提供了5个与取整相关的函数,如下所示: static double ceil(double a):天花板函数,返回大于等于a的最小整数(但是以浮点数形式存储). static double ...

  9. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

随机推荐

  1. BZOJ 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)

    题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门 依然是后缀数组+二分,先用后缀数组处理出height 每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个 ...

  2. COJS 1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★★   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  3. POJ2142 The Balance (扩展欧几里德)

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia The Balance 题目大意  你有一个天平(天平左右两边都可以放砝码)与重量为a,b(1<= ...

  4. ASP.NET-EF基础知识

    定义 asp.net Entity Framework是微软以ADO.NET为基础发展出来的对象关系对应(OR Mapping)解决方案.   三种EF工作模式(自己理解的) 从数据库表创建类 从类创 ...

  5. Servlet里面一调用Dao里的某个方法

    背景: 这几天,由于项目集成的需要,我要在doFilter里调用dao层里的某些方法,可是总之报空指针,只要调用那个dao方法,就报错误.很是纳闷,网上查找了各种原因,终于让我给突破了,看来还是Jav ...

  6. C++实现页码数字统计

    #include<iostream> #include<iomanip> #include<cstdlib> #include<ctime> #incl ...

  7. JSP简单练习-上传文件

    注意:在编写上传文件的代码时,需确保"WEB-INF/lib"下含有jspsmartupload.jar包.否则会出错. jspSmartupload.jar下载 <!-- ...

  8. Python——异常基础

    异常基础 在Python中,异常会依据错误自己主动地被触发.也能由代码触发和截获.异常由五个语句处理: 1.[try/except]:捕捉由Python或你引起的异常并恢复. 2.[try/final ...

  9. [luogu P2123] 皇后游戏 解题报告(贪心)

    题目链接:https://www.luogu.org/problemnew/show/P2123 题目大意: 给定a数组和b数组,要求最小化c数组中的最大值 题解: 考虑微扰法,推一波式子先 设$x= ...

  10. POJ 3261 后缀数组+二分

    思路: 论文题- 二分+对后缀分组 这块一开始不用基数排序 会更快的(其实区别不大) //By SiriusRen #include <cstdio> #include <cstri ...