51Nod 1239 欧拉函数之和

Description

求\(\sum_{i=1}^n\varphi(i),n\leqslant 10^{10}\)

Solution

杜教筛...贴代码...

Code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
const int N = 2000050;
const ll p = 1000000007;

ll Pow(ll a,ll b,ll r=1) { for(;b;b>>=1,a=a*a%p) if(b&1) r=r*a%p;return r; }
ll mul(ll a,ll b) { return (a*b-((ll)((ld)a/p*b+1e-3))*p+p)%p; }

int b[N],pr[N],cp;
ll phi[N],sp[N],inv2=Pow(2,p-2);

void pre(int n) {
	for(int i=2;i<=n;i++) {
		if(!b[i]) pr[++cp]=i,phi[i]=i-1;
		for(int j=1;j<=cp && i*pr[j]<=n;j++) {
			b[i*pr[j]]=1;
			if(i%pr[j]) phi[i*pr[j]]=phi[i]*(pr[j]-1);
			else { phi[i*pr[j]]=phi[i]*pr[j];break; }
		}
	}phi[1]=1;
	for(int i=1;i<=n;i++) sp[i]=(sp[i-1]+phi[i])%p;
}
map<ll,ll> mp;
ll S(ll n) {
	if(n<=2000000) return sp[n];
	if(mp.count(n)) return mp[n];
	ll fn=(n%p)*((n+1)%p)%p*inv2%p;
	for(ll i=2,j;i<=n;i=j+1) {
		j=n/(n/i);
		fn=(fn-(j-i+1)%p*S(n/i)%p+p)%p;
	}return mp[n]=fn;
}

int main() {
	pre(2000000);
	ll n;
	scanf("%lld",&n);
	printf("%lld\n",S(n));
	return 0;
}

  

时间: 2024-10-12 12:48:43

51Nod 1239 欧拉函数之和的相关文章

51nod 1136 欧拉函数

1136 欧拉函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质. Input 输入一个数N.(2 <= N <= 10^9) Output 输出Phi(n). Input示例 8 Output示例 4

欧拉函数之和(51nod 1239)

对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质. S(n) = Phi(1) + Phi(2) + ...... Phi(n),给出n,求S(n),例如:n = 5,S(n) = 1 + 1 + 2 + 2 + 4 = 10,定义Phi(1) = 1.由于结果很大,输出Mod 1000000007的结

【51nod-1239&amp;1244】欧拉函数之和&amp;莫比乌斯函数之和 杜教筛

题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 杜教筛裸题,不过现在我也只会筛这俩前缀和... $$s(n)=\sum _{i=1}^{n}f(i)$$ 那么就有: $$\sum_{i=1}^{n}f(i)\lfloor \frac{n}{i} \

51Nod 1136 欧拉函数 Label:数论

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质. Input 输入一个数N.(2 <= N <= 10^9) Output 输出Phi(n). Input示例 8 Output示例 4 代码 1 #include<iostream> 2 #include<cstring> 3

51nod 1136 欧拉函数【数论】

1136 欧拉函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质. Input 输入一个数N.(2 <= N <= 10^9) Output 输出Phi(n). Input示例 8 Output示例 4

证明 n 等于它所有的因子的欧拉函数之和

当 n 是质数时,易证. 当 n 是合数时,可以把 n 分解 n= ,紧接着求 n 的因子,就是从 n 分解后的东西中选质因子和质因子的幂数, 当 m>1 时,那么可得 ,因为都小于n,所以可以用归纳法,证明成立. 当 m=1 时,也易证. 另一种证明方法是来自<信息安全数学基础>(陈恭亮).

hdu2588 gcd 欧拉函数

GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1567    Accepted Submission(s): 751 Problem Description The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes writte

【数论&#183;欧拉函数】SDOI2008仪仗队

题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如右图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 输入输出格式 输入格式: 共一个数N 输出格式: 共一个数,即C君应看到的学生人数. 输入输出样例 输入样例#1: 4 输出样例#1: 9 说明 [数据规模和约定] 对于 100% 的数据,1 ≤ N ≤ 40000 题解 首先,我们很容易发

bzoj 2818 GCD 数论 欧拉函数

bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4 HINT hint对于样例(2,2),(2,4),(3,3),(4,2) 1<=N<=10^7 题解一(自己yy) phi[i]表示与x互质的数的个数 即gcd(x,y)=1 1<=y<x ∴对于x,y 若a为素数 则gcd(xa,