UVA10200 Prime Time【素数判定】
Euler is a well-known matematician, and, among many other things, he discovered that the formula n2 + 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 knownthat 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 certaininterval.
Input
Each line of input will be given two positive integer a and b such that 0 ≤ a ≤ b ≤ 10000. You mustread 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 inthis 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
问题链接:UVA10200 Prime Time
问题简述:根据公式n * n + n + 41 求出在区间a<= n <= b的n算出的结果是素数的概率。0<= a <= b <= 10000。
问题分析:
统计各个范围的素数的个数是必要的,然后再进行计算。
n=0时,41是素数。
要算区间的概率,需要先计算前缀和,即计算给定n的1-n之间的素数的个数。这样就容易算得区间内的素数个数。
程序说明:
数组sum[]中,存放素数个数的前缀和。sum[i]中存放从0-i之间,满足公式i * i + i + 41为素数的个数。
函数isprime()不是一个真正意义上的素数判断函数,只进行奇数判定,对于本题条件是没有问题的,因为n*n+n+41总是奇数。
函数maketable()是打表函数,用于计算数组sum[]的值。
AC的C++语言程序如下:
/* UVA10200 Prime Time */#include <iostream>
#include <math.h>using namespace std;const int N = 10000;
int sum[N + 1];// 试除法判断一个数是否为素数
bool isprime(int n)
{int end2, i;end2 = (int)sqrt(n);for(i=3; i<=end2; i+=2) {if(n % i == 0)break;}return i > end2;
}void make_table()
{sum[0] = 1;for(int i=1; i<=N; i++) {sum[i] = sum[i - 1];if(isprime(i * i + i + 41))sum[i]++;}
}int main()
{int a, b, cnt;double ans;make_table();while(scanf("%d%d", &a, &b) != EOF) {if(a == 0)cnt = sum[b];elsecnt = sum[b] - sum[a - 1];ans = (double) cnt / (b - a + 1);printf("%.2lf\n", ans * 100 + 1e-5);}return 0;
}
UVA10200 Prime Time【素数判定】相关推荐
- HDOJ-2012 素数判定
素数判定 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- POJ2262Goldbach's Conjecture 简单的素数判定
作者:ACShiryu 时间:2011-8-4 原题:http://poj.org/problem?id=2262 Goldbach's Conjecture Time Limit: 1000MS M ...
- Poj 1811 Prime Test 素数测试 Miller-Rabin 与 整数的因子分解 Pollard rho
随机化算法,想尝试自己写一下,最后还是变成了抄代码... 代码参考了:POJ 1811 Prime Test(大素数判断和素因子分解) - kuangbin - 博客园 学习链接: Miller-Ra ...
- 素数判定质因数分解(数论)(Miller Rabin)(Pollard Rho)
太玄学了! 我真的被概率的魅力折服了.此前我认为1便是1,0.9999999999-便是0.9999999999-. 但实际上它们有着千丝万缕的关系. 试想,如果一件事发生的概率是0.99999999 ...
- HDOJ 2012 素数判定 解题报告
今天确实坑爹,, 这么简单的题目都WA好多次,,, 都是细节上的错误, 直接导致崩盘,,额... 好吧,这个完全就是素数判断,没什么好说的 ,, 就是注意flag标记和判断是否符合条件,,其他就是输出 ...
- 费马小定理与素数判定
费马小定理是初等数论四大定理(威尔逊定理,欧拉定理(数论中的欧拉定理,即欧拉函数),中国剩余定理和费马小定理)之一,在初等数论中有着非常广泛和重要的应用.实际上,它是欧拉定理的一个特殊情况. 其内容为 ...
- C++描述杭电OJ 2012.素数判定 ||
C++描述杭电OJ 2012.素数判定 || Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<= ...
- C++描述杭电OJ 2012. 素数判定 ||
C++描述杭电OJ 2012. 素数判定 || Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y< ...
- ZZULIOJ 1057:素数判定
素数判定 题目描述 输入一个正整数n,判断n是否是素数,若n是素数,输出"Yes",否则输出"No". 输入 输入一个正整数n(n<=1000) 输出 如 ...
最新文章
- NopCommerce架构分析-依赖注入
- php 获得用户地址吗,php获得用户的真实IP地址_PHP教程
- linux中yum进程占cpu百分之九十,在Deepin Linux系统中kworker进程占用CPU达到100%的解决...
- 新思路等级考二级c语言题答案,2017计算机二级C语言考试强化习题及答案
- GDCM:DICOM文件的输入和输出流测试程序
- 美国安全厂商在云安全上的最新进展
- android sqlite使用之模糊查询数据库数据的三种方式
- redux 管理你的 react 应用
- xv6源码阅读——进程切换
- 北复交浙科哈航邮中上科保研之路
- yytextview 复制_YYText使用篇(一)
- 车牌识别对于智慧城市的重要性
- Multiple dex files define Lrx/android/plugins/RxAndroidPlugins;
- 股票10档接口如何获取数据-步骤
- Temporal Action Proposal
- 使用科大讯飞SDK实现语音功能
- “熊猫烧香”主犯:毒王?黑客英雄?
- 可以当零食吃的排骨——椒盐排骨
- 揭秘家用路由器0day漏洞挖掘技术读书笔记 D-Link DIR-645 authentication.cgi溢出漏洞分析
- python文件打包
热门文章
- 使用jQuery Mobile快速开发手机站点
- linux利用anaconda配置python虚拟环境
- 详解:Sqoop的导入和导出数据
- python: for循环时列表长度改变,会发生什么?
- matlab提取线条,请问如何将图片中的红色激光线条给提取出来啊,有没有大佬救救孩子,贴出代码给瞅瞅啊!谢谢!...
- python3.6中内置函数变化
- 获取公司的maven库 和 idea maven 中Projects Settings的Libraries中正常,但是在Maven Projects中Dependencies一直出现红线的解决办法
- Sublime Text3 python交互式环境+快捷键设置
- linux打印全部make编译信息
- 机器学习 --- 1. 线性回归与分类, 解决与区别