求区间 [l,r] 满足 素数 = a^2+b^2 a b为任意整数
打素数表,如何证明 此时的素数满足 %4==1
1 #include<iostream>
2 #include<stdio.h>
3 #include<cstring>
4 #include<cstdlib>
5 #include<bitset>
6 using namespace std;
7 const int maxn=3e8+10;
8
9 bitset<maxn>prime;
10 int main()
11 {
12 int l,r,i,j;
13 while(scanf("%d%d",&l,&r)>0)
14 {
15 prime.set();
16 for(i=3;(j=i*i)<=r;i=i+2)//i*i<=r
17 {
18 if(prime[i]==false)continue;
19 for(;j<=r;j=j+i+i) // !!! j=j+i+i;
20 prime[j]=false;
21 }
22 int ans=0;
23 if(l<=2 && 2<=r) ans++;
24 for(i=5;i<=r;i=i+4)
25 if(l<=i && prime[i]==true) ans++;
26 printf("%d\n",ans);
27 }
28 return 0;
29 }
时间: 2024-10-25 21:38:56