Mean:
f(n)=n*n+n+41;
求n在这个范围内(l<=n<=r)得到的素数的概率。
精度比较坑~~~~~~
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; typedef long long LL; const int maxn=100009; const int INF=0x3f3f3f3f; const int mod=2009; int sum[maxn]; bool isprime(int m) { int k=sqrt(m); for(int i=2; i<=k; i++) if(m%i==0) return false; return true; } void getPrime() { sum[0]=1; for(int i=1; i<=10000; i++) { if(isprime(i*i+i+41)) sum[i]=sum[i-1]+1; else sum[i]=sum[i-1]; } } int main() { getPrime(); int l, r; double ans; while(~scanf("%d %d", &l, &r)) { if(l==0) ans=(double)sum[r]/(r+1); else ans=(double)(sum[r]-sum[l-1])/(r-l+1); ans=ans*100+1e-8; printf("%.2f ", ans); } return 0; }