2 solutions
-
0
Guest MOD
-
0
#include <iostream> using namespace std; const int MAXN = 10000001; bool prime[MAXN]; void solve() { int n, ans = 0; cin >> n; for (int i = 2; i <= n; i++) { if (prime[i]) { ans += n / i; } } cout << ans << endl; } int main() { for (int i = 0; i < MAXN; i++) prime[i] = 1; prime[0] = prime[1] = 0; for (int i = 2; i * i < MAXN; i++) { if (!prime[i]) continue; for (int j = i * i; j < MAXN; j += i) prime[j] = 0; } int t; cin >> t; while (t--) { solve(); } } -
0
设 、 为某个 和 。
现在是 $F(a,b)=\frac{lcm(a, b)}{gcd(a, b)} = \frac{a \cdot b}{ gcd(a,b)^2} = x \cdot y$ .
由于 - 是质数,那么 - 也是质数。要使 是质数,那么其中一个数必须是质数,另一个数必须等于 。我们的条件是 ,这意味着 和 是质数。
我们得到 , , 其中 - 是质数。
问题变为 --计算 的数对 。我们把 固定下来,那么 可以取 到 中的任意值。因此,对于每个素数 来说, 的合适配对数为 。剩下的工作就是列举直到 的所有素数。
在 的限制下,可以使用埃氏筛来完成。
.
- 1
Information
- ID
- 1448
- Time
- 2000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 25
- Accepted
- 8
- Uploaded By