B. On Sum of Fractions
time limit per test 2 seconds
memory limit per test 256 megabytes
Let's assume that
- v(n) is the largest prime number, that does not exceed n;
- u(n) is the smallest prime number strictly greater than n.
Find .
Input
The first line contains integer t (1 ≤ t ≤ 500) — the number of testscases.
Each of the following t lines of the input contains integer n (2 ≤ n ≤ 109).
Output
Print t lines: the i-th of them must contain the answer to the i-th test as an irreducible fraction "p/q", where p, q are integers, q > 0.
Sample test(s)
Input
2
2
3
Output
1/6 7/30 意解: 题目是一个数论类的题目,不难,关键在于观察. AC代码:#include <iostream> #include <cstdio> using namespace std; typedef long long ll; bool is_prime(int x) //判断素数; { for(int i = 2; i * i <= x; i++) if(x % i == 0) return false; return true; } ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } int find1(int x) { for(x;x >= 2; x--) if(is_prime(x)) return x; } int find2(int x) { for(x++;;x++) if(is_prime(x)) return x; } int main() { int n,t; cin>>t; while(t--) { scanf("%d",&n); ll v = find1(n); ll u = find2(n); ll a = u * (v - 2) + 2 * (n - v) + 2; //这边注意int会爆掉; ll b = 2 * u * v; ll T = gcd(a,b); printf("%I64d/%I64d\n",a / T, b / T); } return 0; }