2820: YY的GCD

Time Limit: 10 Sec Memory Limit: 512 MB

Description

神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种

傻×必然不会了,于是向你来请教……多组输入

Input

第一行一个整数T 表述数据组数接下来T行,每行两个正整数,表示N, M

Output

T行,每行一个整数表示第i组数据的结果

Sample Input

2

10 10

100 100

Sample Output

30

2791

HINT

T = 10000

N, M <= 10000000

大佬的题解 还是弱啊orz

/*
莫比乌斯.
最后用除法分块..
筛莫比乌斯函数部分:
显然每个素数直接计算mu[i]=-1.
我们知道莫比乌斯函数值是(-1)^k,k是互异质数的个数.
对于一个合数x,令它质因子的最小的那个为p1,
则有x=p1*t1,另设一个与异于p1的质因子为p2.
则有p1*t1=p2*t2.
因为p1与p2互素,所以p2|t1,p1|t2.
所以当i枚举到t2时,因为p1|t2,所以退出
**有一个疑问:就是如果有一个数x1>x,那直接退出以后是不是会影响x1函数值的计算???数学不好没证出来orz**
假如有一个x1=t1*p,且p是x1最大的质因数.
当i枚举到t1时,计算一下x的函数值.
所以我们保证算的每一个合数的莫比乌斯函数的时候
都是在最后一个计算素数的时候的
即每个函数值都只计算了一次.
复杂度是O(n)哒.
*/
#include<iostream>
#include<cstdio>
#define MAXN 10000001
#define LL long long
using namespace std;
int mu[MAXN],pri[MAXN],tot,g[MAXN],sum[MAXN],last;
LL ans,n,m;
bool vis[MAXN];
void pre()
{
mu[1]=1;
for(int i=2;i<=MAXN-1;i++)
{
if(!vis[i]) pri[++tot]=i,mu[i]=-1,g[i]=1;
for(int j=1;j<=tot&&i*pri[j]<=MAXN-1;j++)
{
vis[i*pri[j]]=true;
if(i%pri[j]) mu[i*pri[j]]=-mu[i],g[i*pri[j]]=mu[i]-g[i];
else {
mu[i*pri[j]]=0;g[i*pri[j]]=mu[i];break;
}
}
}
for(int i=1;i<=MAXN-1;i++) sum[i]=sum[i-1]+g[i]; }
int main()
{
int t,x,y;pre();
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
if(n>m) swap(n,m);
ans=0;
for(LL i=1;i<=n;i=last+1)
{
last=min(n/(n/i),m/(m/i));
ans+=(n/i)*(m/i)*(sum[last]-sum[i-1]);
}
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. Sublime插件支持Sass编译和Babel解析ES6 &amp; .sublime-build文件初探
  2. css浏览器兼容问题
  3. Cannot export AX project in AX7
  4. extjs4.0下的日期控件的星期显示为y的解决办法
  5. 变形--缩放 scale()
  6. Kakfa揭秘 Day1 Kafka原理内幕
  7. 【CF】310 Div.1 C. Case of Chocolate
  8. Qt Quick 与 QML语言(初学笔记1)
  9. hdu1054 树状dp
  10. iOS 开发 之 测试框架kiwi
  11. OpenLayers3--ol3--新特性
  12. Python3 下实现 Tencent AI 调用
  13. svg和css实现波浪动效
  14. Centos7.3离线(rpm方式)安装mysql服务
  15. Lintcode155-Minimum Depth of Binary Tree-Easy
  16. 管理商品demo
  17. Java中关于类型自动提升的两个注意点。
  18. ceph 对象存储跨机房容灾
  19. Buffer、ArrayBuffer、DataView互转(node.js)
  20. 解决白屏(vue) - webpace es6转es5

热门文章

  1. 『Python基础』第6节:流程控制之while循环
  2. git创建本地分支,推送到远程
  3. 怎样安装ipython
  4. 安卓开发之利用runOnUiThread在子线程更新UI
  5. stm32和cortex M3学习内核简单总结
  6. centos7 安装jdk及mysql8
  7. 关于QPS、TPS、PV、UV、GMV、IP、RPS的名词解释!
  8. VS代码自动排版
  9. JAVA笔记整理(五),JAVA中的继承
  10. django操作mysql