哥德巴赫猜想
时间限制:1秒 内存限制:128M
题目描述
哥德巴赫猜想指的是:大于2的偶数,每一个偶数都能被表示为两个质数的和。请问不超过n的偶数中,有多少个数符合哥德巴赫猜想?
输入描述
一个整数n(3≤n≤10^18)
输出描述
输出一个整数,如题。
样例输入
10
样例输出
4
提示
4、6、8、10 都符合哥德巴赫猜想。
我们列举一下的式子
4=2+2
6=3+3
8=3+5
10=5+5
12=5+7
14=7+7
16=5+11
18=5+13
20=7+13
不难看出,所有偶数中只有0和2不符合哥德巴赫猜想,所有只需要输出偶数数量-1
而偶数数量为n/2
所以,我们只需要输出(n/2)-1
而题目描述中n<=1e18
所以要改变一下式子
(n*1ll/2)*1ll-1;
所以根据上述描述中,代码为
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin >> n;
printf ("%lld",( n * 1ll / 2 ) * 1ll - 1);
return 0;
}