bzoj2818

maksyuki 发表于 oj 分类,标签:
0

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

Source

湖北省队互测

 

题目类型:数论

算法分析: 首先枚举[1, 1e7]内的每一个素数c,即令gcd (x, y) = c,然后该子问题求解的是在[1,N]内满足上面关系的有序对(x,y)的数量。上式可以化简为gcd(x/c, y/c) = 1,然后问题转换为在[1, N / c]内满足gcd (x /c, y/c) = 1的有序对数的个数,这里可以枚举所有小于等于y的所有的与其互质的x,可见可以使用Euler函数求解。只不过之后将Euler值维护一个前缀和再加上当x恰好等于y时的个数。注意这里应该同时求解出素数表和Euler函数表,否则会TLE