素数
説明] Nのタイトル - M +の数nにプライム
[解決]レポート
「時々、数論の主題の複雑さはそれほど大きくない、実際には、素晴らしく見えました。」
コードを参照してください。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e6 + 3;
ll n, m, pr[N], tot, s[N];
bool vis[N];
int main() {
int T;
scanf("%d", &T);
while (T--) {
scanf("%lld%lld", &n, &m);
memset(vis, 0, sizeof vis);
tot = m + 1;
for (ll i = 2; i <= 1e6 && i <= n + m; i++)
for (ll j = (n / i) * i; j <= n + m; j += i) //保证跳到的都是合数
if (j >= n && j != i && !vis[j - n]) {
vis[j - n] = 1;
tot--; //素数的个数等于总数-合数
}
printf("%lld\n", tot);
}
return 0;
}