这个题主要是:
①素筛
②费马二平方定理
费马二平方定理
:
除了 2 以外 素数可以分为两类 :一类可以表示为a^2 + b^2
这种形式的素数集合,和另一类不能表示为这种形的素数集合。
而可以表示为```a2+b2这种 mod
4 结果为1.
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
const long maxn = 3e7+5;
bool prime[maxn];
bool y[maxn];
void Seve_Prime()
{
memset(prime, true, sizeof(prime));
prime[0] =prime[1] = false;
for(long i = 2; i*i < maxn; i++)
{
if(prime[i] == true)
{
for(long j = i*2; j <= maxn; j+=i)
{
prime[j] = false;
}
}
}
}
int main()
{
long l, r;
scanf("%ld %ld", &l, &r);
Seve_Prime();
long cnt = 0;
for(long i = l; i <= r; i++)
{
if(i%4 == 1&& prime[i])cnt++;
}
cout<<cnt<<endl;
return 0;
}