CF 113C
求区间 [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 }