uva10200 Prime Time

    xiaoxiao2025-04-16  10

    刚开始想到素数筛选来标记每一个素数,后来发现10000*10000是1亿,数组开不了这么大;然后发现数据只有10000,完全可以一个一个的判断数据,很快的写了一遍,果断超时,于是就先打表了一下,又提交,wa!改了下精度,然后A了;

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #define N 10010 #define INF 999999999 using namespace std; int prime(int n) { if(n==1||n==0) return 0; int k,i; k=sqrt(n); for(i=2;i<=k;i++) { if(n%i==0) return 0; } return 1; } int main() { int a1,b,i,n,sum; int a[N]; int count=0; for(i=0;i<=10000;i++)//先打表 { n=i*i+i+41; if(prime(n)) count++; a[i]=count; } while(~scanf("%d%d",&a1,&b)) { if(a1==0)//a1等于0时候a1-1会越界,所以特判一下; sum=a[b]-a[a1]+1; else sum=a[b]-a[a1-1]; printf("%.2f\n",1e-6+100.0*sum/(b-a1+1));//注意要加个1e-6,不加会精度错误wa  } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1298111.html
    最新回复(0)