为什么我算出来的答案是947303呢?看半天想不明白。
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int N = 3e6;
typedef long long ll;
ll primes[N], cnt = 0;
bool st[N];
int main()
{
for(ll i = 2; i <= N; i++)
{
if(st[i]) continue;
primes[cnt++] = i;
for(ll j = i; j <= N; j += i)
{
st[j] = true;
}
}
ll res = 0;
for(ll i = 0; i < cnt; i++)
{
for(ll j = i + 1; j < cnt; j++)
{
ll a = primes[i] * primes[i];
ll b = primes[j] * primes[j];
if(a * b > 23333333333333) break;
if(a * b <= 23333333333333 && a * b >= 2333) res++;
}
}
cout << res;
return 0;
}