Prime Time UVA - 10200(精度处理,素数判定)

Problem Description

Euler is a well-known matematician, and, among many other things, he discovered that the formula
n^{2} + n + 41n2+n+41 produces a prime for 0 ≤ n &lt; 400n<40. For n = 40n=40, the formula produces 16811681, which is 41 ∗ 414141.Even though this formula doesn’t always produce a prime, it still produces a lot of primes. It’s known that for n ≤ 10000000n10000000, there are 47,547,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 aa and bb such that 0 ≤ a ≤ b ≤ 100000ab10000. You must read until the end of the file.

Output

For each pair a, ba,b read, you must output the percentage of prime numbers produced by the formula in
this interval (a ≤ n ≤ b)(anb) rounded to two decimal digits.

Sample Input

0 39
0 40
39 40

Sample Output

100.00
97.56
50.00

题意:

输入数据a和b,求a和b之间数经过n^{2}+n+41n2+n+41为素数的所占比值保留两位小数;

思路:

数据范围00 到 1000010000啊~~~, 懂 !!!!!!!! _(:зゝ∠)_而且卡精度卡到死10^{-6}106真***恶心~~~~(>—<)~~~~;

主要进行素数打表(这是关键)o(︶︿︶)o 唉(在这上面错了N次)不说了,说多了都是泪φ(≧ω≦*)♪;

看代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 #define ll long long
 6 const int N=100100;
 7 bool isprime[N];
 8 bool Prime(int a)//判定素数
 9 {
10     for(int i=2; i*i<=a; i++)
11         if(a%i==0)
12             return false;
13     return true;
14 }
15 void Isprime()//进行打表
16 {
17     for(int i=0; i<N; i++)
18     {
19         if(Prime(i*i+i+41))
20             isprime[i]=true;
21         else
22             isprime[i]=false;
23     }
24 }
25 int main()
26 {
27     Isprime();
28     int a,b;
29     while(cin>>a>>b)
30     {
31         int s=0;
32         for(int i=a; i<=b; i++)
33         {
34             if(isprime[i])
35                 s++;//记录个数;
36         }
37         double z=(double)s/(double)(b-a+1)*100+0.00000001;//卡精度
38         printf("%.2lf\n",z);
39     }
40     return 0;
41 }
View Code

 

实践是检验真理的唯一标准

转载于:https://www.cnblogs.com/dwj-2019/p/11343455.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值