W - Prime Time
题意:用公式n*n+n+41,判断素数的百分比
#include<iostream> #include<algorithm> #include<math.h> #include<string.h> #include<string> #define ll long long #define mx 10000100 using namespace std; int sum[10010]; bool isprime(int x)//快速判断素数 { int n=x*x+x+41; for(int i=2;i*i<=n;i++) if(n%i==0) return false; return true; } int main() { int a,b; sum[0]=1;//0*0+0+41是素数 for(int i=1;i<=10000;i++) sum[i]=sum[i-1]+isprime(i); //cout<<isprime(40)<<endl; while(~scanf("%d%d",&a,&b)) { //cout<<sum[a]<<' '<<sum[b]<<' '<<isprime(a)<<' '<<sum[b]-sum[a]+isprime(a)<<endl; printf("%.2f ",(sum[b]-sum[a]+isprime(a))*1.0/(b-a+1)*100+1e-8);//+le-8提高精度,否则WA } return 0; } // 0 39 // 0 40 // 39 40