Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
$\texttt{C++}$
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e7 + 5;
bool f[nmax + 1];
void sangnt()
{
memset(f, true, sizeof(f));
f[0] = false;
f[1] = false;
for (int i = 2; i * i <= nmax; ++i)
{
if (f[i] == true)
{
for (int j = i * i; j <= nmax; j += i)
{
f[j] = false;
}
}
}
}
int tcs(int n)
{
int s = 0;
while (n != 0)
{
s += n % 10;
n /= 10;
}
return s;
}
int d[1000005];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
freopen("SPRIME.inp", "r", stdin);
freopen("SPRIME.out", "w", stdout);
sangnt();
for (int i = 1; i <= 1000000; i++)
{
d[i] = d[i - 1] + (f[i] && f[tcs(i)]);
}
int t;
cin >> t;
while (t--)
{
int l, r;
cin >> l >> r;
cout << d[r] - d[l - 1] << '\n';
}
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Sự kiện
5051
4806
3242
mảng + dồn
2408
35533
1750
Là sao?