给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
标签:前缀和 一个 sea mes 重复 php oid col href
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
一个整数N
如题
hint
对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
#include<bits/stdc++.h> using namespace std; #define ll long long const int maxn = 1e7 + 5; int n, pri[maxn]; ll f[maxn]; bool Notpri[maxn]; int tot = 0; void pre(int x) { f[1] = 1; for (int i = 2; i <= n; ++i) { if(!Notpri[i]) pri[++tot] = i, f[i] = i - 1; for (int j = 1; j <= tot && i * pri[j] <= n; ++j) { Notpri[i * pri[j]] = true; if(i % pri[j] == 0) { f[i * pri[j]] = f[i] * pri[j]; break; } f[i * pri[j]] = f[i] * (pri[j] - 1); } } for (int i = 1; i <= n; ++i) f[i] += f[i - 1]; } int main() { scanf("%d", &n); pre(n); ll ans = 0; for (int i = 1; i <= tot; ++i) { ans += f[n / pri[i]] * 2; ans--; } printf("%lld\n", ans); return 0; }
标签:前缀和 一个 sea mes 重复 php oid col href
原文地址:https://www.cnblogs.com/oi-forever/p/8975661.html