题目

题意:求小于n并且 和n不互质的数的总和。

思路:求小于n并且与n互质的数的和为:n*phi[n]/2 .

若a和n互质,n-a必定也和n互质(a<n)。也就是说num必定为偶数。其中互质的数成对存在。其和为n。

公式证明:

反证法:
如果存在K!=1使gcd(n,n-i)=k,那么(n-i)%k==0
而n%k=0
那么必须保证i%k=0
k是n的因子,如果i%k=0那么gcd(n,i)=k,矛盾出现;

所以先求出1……n-1 的和, 再用这个和 减去 上面公式求出来的值。

欧拉函数phi(m):当m>1是,phi(m)表示比m小且与m互质的正整数个数

 #include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define LL long long
const int mo = ; LL phi(LL n) //欧拉函数模板
{
LL i, m = (int)sqrt(n+0.5), ans = n;
for(i = ; i <= m; i++)
{
if(n%i == )
ans = ans/i*(i-);
while(n%i == )
n /= i;
}
if(n > ) ans = ans/n*(n-);
return ans;
}
int main()
{
LL res, n, i;
while(~scanf("%lld", &n) && n)
{
res = n*(n-)/;
res -= phi(n)*n/; //当n等于2的时候,phi为1,所以不能写成 phi(n)/2*n;
printf("%lld\n", res%mo);
}
return ;
}

再贴一个关于欧拉函数的讲解博客

最新文章

  1. JDK,JRE,JVM分别是什么?
  2. Threejs 物体闪烁
  3. 修改Shp文件名称
  4. Maven提高篇系列之(五)——处理依赖冲突
  5. 微博一键分享主要通过对指定 URL 添加各种参数来实现;
  6. c# 代理IP获取通用方法
  7. 详述JavaScript数组
  8. GD库 图片缩略图 图片水印
  9. 一张图搞懂容器所有操作 - 每天5分钟玩转 Docker 容器技术(26)
  10. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释
  11. springboot 热部署 idea版本(转)
  12. Linux(CentOS6.5)下修改Nginx初始化配置
  13. 测试自动化学习3-python3简单操作
  14. android开发_ViewGroup(组视图)-- 五大布局
  15. CSSの変数を使う
  16. php面向对象精要(1)
  17. Word或者WPS里证件照的背景底色和像素调整
  18. lua表类型
  19. JPA实体类中的注解
  20. 倒计时特效的CountAnimationLabel

热门文章

  1. Careercup - Facebook面试题 - 4909367207919616
  2. 7zip 命令行
  3. 2124: 等差子序列 - BZOJ
  4. Codeforces Round #363 (Div. 2)-&gt;B. One Bomb
  5. 一个碉堡的swing类
  6. JAVASCRIPT的一些知识点梳理
  7. C Primer Plus 第5章 运算符、表达式和语句 编程练习
  8. [2-sat]HDOJ1824 Let&#39;s go home
  9. linux网络配置、环境变量以及JDK安装(CentOS 6.5)
  10. [hackerrank]Service Lane