这个就是一个简单的素数判断,然后就是求a, b之间素数存在的概率不知道为什么就是最后概率后面要+1e-8可能即使double精确度吧
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> using namespace std; #define N 11000 int f[N]; int q(long long m) { int k=(int)sqrt(m); for(int i=2;i<=k;i++) if(m%i==0) return 0; return 1; } int main() { int a,b; f[0]=1; for(int i=1;i<N;i++) f[i]=f[i-1]+q(i*i+i+41); while(scanf("%d%d", &a,&b) != EOF) { double s; if(a==0) s=1.0*f[b]/(b-a+1); else s=1.0*(f[b]-f[a-1])/(b-a+1); printf("%.2f\n", s*100+1e-8); } return 0; }
转载请注明原文地址: https://ju.6miu.com/read-1296736.html