UVA 10200 Prime Time (素数打表)

    xiaoxiao2025-12-30  7

    Euler is a well-known matematician, and, among many other things, he discovered that the formula  2 + n + 41 produces a prime for 0 ≤ n < 40. For n = 40, the formula produces 1681, which is 41 ∗ 41.  Even though this formula doesn’t always produce a prime, it still produces a lot of primes. It’s known  that for n ≤ 10000000, there are 47,5% of primes produced by the formula!  So, you’ll write a program that will output how many primes does the formula output for a certain  interval.  Input  Each line of input will be given two positive integer a and b such that 0 ≤ a ≤ b ≤ 10000. You must  read until the end of the file.  Output  For each pair a, b read, you must output the percentage of prime numbers produced by the formula in  this interval (a ≤ n ≤ b) rounded to two decimal digits.  Sample Input  0 39  0 40  39 40  Sample Output  100.00  97.56 

    50.00

    不要问我为什么加个1e-8,因为我也不知为什么,知道的话,请评论告诉我下,谢谢!

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int su[10005]; int jud(int a) { /*for(i=2;i*i<=a;i++) 这一种方法也行 { if(a%i==0) return 0; } return 1;*/ if(a%2==0) return 0; for(int i=3;i*i<=a;i=i+2) { if(a%i==0) return 0; } return 1; } int main() { for(int i=0;i<=10000;i++) { su[i]=jud(i*i+i+41); } int a,b; while(scanf("%d%d",&a,&b)!=EOF) { double flag=0; for(int i=a;i<=b;i++) { if(su[i]==1) flag++; } double ans; ans=(flag*1.0/(b-a+1))*100+1e-8; printf("%.2lf\n",ans); } return 0; }

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