题目大意:
定义 v ( n ) v(n) v(n) 为不大于 n n n 的最大素数, u ( n ) u(n) u(n) 为大于 n n n 的最小素数。
求 :
∑ i = 2 n 1 u ( n ) v ( n ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)} i=2∑nu(n)v(n)1
的值。
题解:
这个式子看起来很难直接做,于是我们可以试着在 n n n 较小的情况下把它拆开找一找规律。
当 n = 11 n=11 n=11 时,原式为:
1 2 × 3 + 1 3 × 5 + 1 3 × 5 + 1 5 × 7 + 1 5 × 7 + 1 7 × 11 + 1 7 × 11 + 1 7 × 11 + 1 7 × 11 + 1 11 × 13 \frac{1}{2\times 3}+\frac{1}{3\times 5}+\frac{1}{3\times 5}+\frac{1}{5\times7}+\frac{1}{5\times7}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{11\times13} 2×31+3×51+3×51+5×71+5×71+7×111+7×111+7×111+7×111+11×131
我们会发现,有些分式是重复的,所以,我们可以化简为:
1 2 × 3 + 2 3 × 5 + 2 5 × 7 + 4 7 × 11 + 1 11 × 13 \frac{1}{2\times 3}+\frac{2}{3\times 5}+\frac{2}{5\times7}+\frac{4}{7\times11}+\frac{1}{11\times13} 2×31+3×52+5×72+7×114+11×131
然后,我们观察分式的分子和分母,可以发现,原式又为:
3 − 2 2 × 3 + 5 − 3 3 × 5 + 7 − 5 5 × 7 + 11 − 7 7 × 11 + 1 11 × 13 \frac{3-2}{2\times 3}+\frac{5-3}{3\times 5}+\frac{7-5}{5\times7}+\frac{11-7}{7\times11}+\frac{1}{11\times13} 2×33−2+3×55−3+5×77−5+7×1111−7+11×131
这个式子的前 4 4 4 项可以用小学的裂项芝士进行裂项,所以原式又可以化简为:
1 2 − 1 11 + 1 11 × 13 \frac{1}{2}-\frac{1}{11}+\frac{1}{11\times13} 21−111+11×131
考虑其更一般的形式,我们会发现,只有最后的一项不能完全的裂完,所以要分开考虑,故
∑ i = 2 n 1 u ( n ) v ( n ) = 1 2 − 1 u ( n ) + ∑ i = u ( n ) n 1 u ( i ) v ( i ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)}=\frac{1}{2}-\frac{1}{u(n)}+\sum^{n}_{i=u(n)}{\frac{1}{u(i)v(i)}} i=2∑nu(n)v(n)1=21−u(n)1+i=u(n)∑nu(i)v(i)1
考虑如何解决最后一项,我们可以发现,最后一项拆开来后的每个分式的分母都是一样的,故:
∑ i = u ( n ) n 1 u ( i ) v ( i ) = n − u ( n ) + 1 u ( n ) v ( n ) \sum^{n}_{i=u(n)}{\frac{1}{u(i)v(i)}}=\frac{n-u(n)+1}{u(n)v(n)} i=u(n)∑nu(i)v(i)1=u(n)v(n)n−u(n)+1
所以:
∑ i = 2 n 1 u ( n ) v ( n ) = 1 2 − 1 u ( n ) + n − u ( n ) + 1 u ( n ) v ( n ) = u ( n ) v ( n ) − 2 × u ( n ) − 2 × v ( n ) + 2 × n + 2 2 × u ( n ) v ( n ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)}=\frac{1}{2}-\frac{1}{u(n)}+\frac{n-u(n)+1}{u(n)v(n)}=\frac{u(n)v(n)-2\times u(n)-2\times v(n) + 2\times n + 2}{2\times u(n)v(n)} i=2∑nu(n)v(n)1=21−u(n)1+u(n)v(n)n−u(n)+1=2×u(n)v(n)u(n)v(n)−2×u(n)−2×v(n)+2×n+2
由于素数的分布比较密集,所以可以暴力得到 u ( n ) u(n) u(n) 和 v ( n ) v(n) v(n),最后约分输出答案即可。
一些粗略的证明:
Q:为什么对于任意的 n n n,拆开后除了分母为 u ( n ) v ( n ) u(n)v(n) u(n)v(n) 的项,都可以组合成分数裂项的形式?
A:考虑分母为 u ( i ) v ( i ) u(i)v(i) u(i)v(i) 的分式,因为 u ( i ) u(i) u(i) 是大于 i i i 的最小素数,并且 v ( i ) v(i) v(i) 是不大于 i i i 的最大素数,故分子必须不小于 v ( i ) v(i) v(i) 且小于 u ( i ) u(i) u(i),故除了最后的边界意外,每个分母为 u ( i ) v ( i ) u(i)v(i) u(i)v(i) 的分式,都有 u ( i ) − v ( i ) u(i)-v(i) u(i)−v(i) 个。
Code:
#include<bits/stdc++.h>
using namespace std;
bool prime(int n) { //暴力判断素数
if(n == 1) return false;
for(int i = 2; i * i <= n; ++i) {
if(n % i == 0) return false;
}
return true;
}
int T;
int main() {
cin >> T;
while(T --) {
long long n, v, u; //注意long long
cin >> n;
u = n + 1;
v = n;
while(!prime(v)) u ++; //u(n)
while(!prime(u)) v --; //v(n)
long long fz = v * u - 2 * u + 2 * n - 2 * v + 2, fm = 2 * u * v; //计算分子和分母
long long g = __gcd(fz, fm);
fz /= g; fm /= g; //约分
cout << fz << '/' << fm << endl;
}
return 0;
}