/*
给定n,对于所有的对(i,j),i<j,求出sum{gcd(i,j)}
有递推式sum[n]=sum[n-1]+f[n]
其中f[n]=gcd(1,n)+gcd(2,n)+gcd(3,n)......
那么如何求出f[n],
设满足gcd(i,n)=x的组合有g(x,n)个,那么f[n]=sum{x*g(x,n)}
对于gcd(i,n)=x,即有gcd(i/x,n/x)=1,因为将n/x看做是固定的数,那么g(x,n)=phi[n/x]
求答案时直接先求出所有答案,因为枚举n的每个因子比较麻烦,所以直接枚举x即可,
那么由上述公式可推出==>f[x*t]+=x*phi[t]
筛出phi表
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 4000005
//#define ll long long bool check[maxn+];
int phi[maxn+],prime[maxn+],tot;
void init(){
memset(check,,sizeof check);
phi[]=;tot=;
for(int i=;i<=maxn;i++){
if(check[i]==){
prime[++tot]=i;
phi[i]=i-;
}
for(int j=;j<=tot;j++){
if(i*prime[j]>maxn)break;
check[i*prime[j]]=;
if(i%prime[j]==){//prime[j]是i的因子
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
} long long f[maxn],s[maxn];
int main(){
init();
for(int i=;i<=maxn;i++)//枚举每个因数x
for(int j=i+i;j<=maxn;j+=i)//
f[j]+=(long long)i*phi[j/i];
for(int i=;i<=maxn;i++)
s[i]=s[i-]+f[i]; int n;
while(cin>>n,n)
cout<<s[n]<<endl;
}

uva11426 欧拉函数应用,kuangbin的筛法模板的更多相关文章

  1. UVA11426 欧拉函数

    大白书P125 #include <iostream> #include <cstring> using namespace std; #define MMX 4000010 ...

  2. poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)

    http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它主要的性质. 1.欧拉函数是求小于n且和n互质(包含1)的正整数的个数. 记为φ(n). 2. ...

  3. 线性筛的同时得到欧拉函数 (KuangBin板子)

    线性筛的思想:每个被筛的数是通过它最小的质因子所筛去的. 这种思想保证了每个数只会被筛一次,从而达到线性.并且,这个思想实现起来非常巧妙(见代码注释)! 因为线性筛的操作中用到了倍数的关系去实现,因此 ...

  4. uva11426 欧拉函数应用

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121873#problem/F 题目大意:给你一个数n,让你输出(i=1-> ...

  5. 欧拉函数 & 【POJ】2478 Farey Sequence & 【HDU】2824 The Euler function

    http://poj.org/problem?id=2478 http://acm.hdu.edu.cn/showproblem.php?pid=2824 欧拉函数模板裸题,有两种方法求出所有的欧拉函 ...

  6. 欧拉函数 &【POJ 2478】欧拉筛法

    通式: $\phi(x)=x(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3}) \cdots (1-\frac{1}{p_n})$ 若n是质数p的k ...

  7. UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)

    题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...

  8. UVA 11426 GCD - Extreme (II) (欧拉函数+筛法)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/O 题意是给你n,求所有gcd(i , j)的和,其中 ...

  9. UVA11426 GCD - Extreme (II) (欧拉函数/莫比乌斯反演)

    UVA11426 GCD - Extreme (II) 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 10 100 200000 0 输出样例#1: 67 13 ...

随机推荐

  1. 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表

    \day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...

  2. 解码base64加密的图片并打印到前台

    经过base64加密的图片对象是一串字符串,我们解码后可通过流将其打印出来: utils类: package com.aebiz.app.web.modules.controllers.open.ap ...

  3. valueForKeyPath用途

    可能大家对- (id)valueForKeyPath:(NSString *)keyPath方法不是很了解. 其实这个方法非常的强大,举个例子: NSArray *array = @[@"n ...

  4. 两个类似的ViewModel一个可以重写事件,另一个不能重写事件,是哪里出了错。

    答:继承错了,BaseViewModel里面是事件.

  5. oracle启用归档日志

    一.开启归档 1.查看归档信息 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabl ...

  6. 20165231 2017-2018-2 《Java程序设计》第2周学习总结

    前言 第二周算是正正式式的学习了java程序设计.之前对java是一片茫然,现在算是初见端倪了,知道了java程序的基本开头,多个class时该运行哪个,哪个是输出打印语句等等. 目前我使用的java ...

  7. GPU Tips

    <1> Basic #include <stdio.h> #include <cuda_runtime.h> #include <device_launch_ ...

  8. CVE-2019-0797漏洞:Windows操作系统中的新零日在攻击中被利用

    https://securelist.com/cve-2019-0797-zero-day-vulnerability/89885/ 前言 在2019年2月,卡巴实验室的自动漏洞防护(AEP)系统检测 ...

  9. 【转】Python数据类型之“文本序列(Text Sequence)”

    [转]Python数据类型之“文本序列(Text Sequence)” Python中的文本序列类型 Python中的文本数据由str对象或字符串进行处理. 1.字符串 字符串是Unicode码值的不 ...

  10. dubbo源码分析4——SPI机制_ExtensionFactory类的作用

    ExtensionFactory的源码: @SPI public interface ExtensionFactory { /** * Get extension. * * @param type o ...