(原)pat1007素数猜想
---恢复内容开始---
1007. 素数对猜想 (20)
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
1:素数就是我们常说的质数,就是智能能被1和本身整除的数,判断一个数是不是素数最简单的方法就是枚举,即将n 除2 ~ n - 1的数如果存在存在一个数能整除,就不是素数,不过这个算法效率太低,改进一下,
2:根据一个合数的因子,不会大于sqrt(n)n的开方这个定理,可以算出100000以内的素数,再大不是算不出来了而是需要等待很长时间,这样算法也就没什么意义了,
3:筛法求素数这个方法有个缺点,就是需要额外的空间去存储,首先我们要创建一个数组大小为 n + 1,boolean primer[n + 1],初始全为True,每次去最小的素数,然后把在数组 为其倍数的元素筛选掉,这里我们置为false
例如:0 ~ 30这几个数
第一个素数为2 我们筛选掉 4 6 8 10 12 14 16 18 20 22 24 26 28 30
第二个素数为3 我们筛选掉9 15 21 27
.......
直到找出全部素数
第二种方法的python代码实现:
这里我还遇到一个问题这就涉及到代码的组织方式
如果把13行的代码改为
while i * i < n:
i = i + 1
这样在oj上提交就不能通过,
这是一个值得我自己思考的问题,如果因为代码本身造成的算法效率流失只能说明,是自己的无能了。
#!/usr/bin/env python3
__author__ = 'chao'
import math def isprimer(n):
if n < 2:
return False
if n == 2:
return True
i = 2
temp = math.sqrt(n)
while i < temp:
i += 1
if n % i == 0:
return False
return True def nofprimer(n):
count = 1
i = 1
if n < 3:
return 0
if n == 3:
return 1
while True:
temp = 6 * i + 1
temp2 = temp - 2
if temp <= n:
if isprimer(temp) and isprimer(temp2):
count += 1
else:
break
i += 1
return count if __name__ == "__main__":
n = input()
n = int(n)
print(nofprimer(n))
第三种方法代码实现:
import math p_array = [True]
p_array = [True] * (10000000+1) def isprimer(n):
p_array[0] = False
p_array[1] = False
if (n < 2):
return
i = 2
while i < n:
if p_array[i]:
j = 2
temp = i * j
while temp <= n:
if p_array[temp]:
p_array[temp] = False
j += 1
temp = i * j
i += 1
return def count_primer(n):
count = 1
if n < 5:
return 0
if n == 5:
return count
i = 1
while True:
temp1 = 6 * i - 1
temp2 = temp1 + 2
if temp2 > n:
break
if p_array[temp1] and p_array[temp2]:
count += 1
i += 1
return count if __name__ == "__main__":
n = input()
n = int(n)
isprimer(n)
print(count_primer(n))
刚学python练练手代码还不够规范
(原)pat1007素数猜想的更多相关文章
- Android中图片优化之webp使用
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 有关图片的优化,通常我们会用到LruCache(使用强引用.强 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- NowCoder猜想(素数筛法+位压缩)
在期末被各科的大作业碾压快要窒息之际,百忙之中抽空上牛客网逛了逛,无意中发现一道好题,NowCoder猜想,题意很明显,就是个简单的素数筛法,但竟然超内存了,我晕(+﹏+)~ 明明有 3 万多 k ...
- PAT Basic 1007 素数对猜想 (20) [数学问题-素数]
题目 让我们定义 dn 为:dn = pn+1 – pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想"认为"存在⽆穷多对 ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...
- CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想
http://codeforces.com/problemset/problem/735/D 题意是..一个数n的贡献是它的最大的因子,这个因子不能等于它本身 然后呢..现在我们可以将n拆成任意个数的 ...
- [原]Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
本文出自:http://blog.csdn.net/svitter/ 题意: 求解An 与 An-1是否相等. n分为两个情况-- 1.n为素数, 2.n为合数. = =好像说了个废话..素数的时候 ...
- [原]素数筛法【Sieve Of Eratosthenes + Sieve Of Euler】
拖了有段时间,今天来总结下两个常用的素数筛法: 1.sieve of Eratosthenes[埃氏筛法] 这是最简单朴素的素数筛法了,根据wikipedia,时间复杂度为 ,空间复杂度为O(n). ...
- hihoCoder 1493 : 歌德巴赫猜想 素数筛法
题意:哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和".给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?如果有多组解,输出P最小的一 ...
随机推荐
- nginx,tomcat,apache三者分别用来做什么,有何区别
1. Nginx和tomcat的区别 nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java we ...
- Codeforces Round #396 (Div. 2) A
While Mahmoud and Ehab were practicing for IOI, they found a problem which name was Longest common s ...
- mybatis实现简单的增删查改
接触一个新技术,首先去了解它的一些基本概念,这项技术用在什么方面的.这样学习起来,方向性也会更强一些.我对于mybatis的理解是,它是一个封装了JDBC的java框架.所能实现的功能是对数据库进行增 ...
- 我的NopCommerce之旅(3): 系统代码结构分析
一.概述 基于MVC 二.详细描述 \Libraries\Nop.Core 核心类,包括缓存.事件.帮助类.业务对象(订单.客户实体) \Libraries\Nop.Data 数据访问层,采用Enti ...
- 从零开始利用vue-cli搭建简单音乐网站(五)
上一篇文章讲到的是如何利用mongoose从数据库读取数据然后更新页面,接下来要实现的就是用户注册登录功能,这个功能涉及到的东西太多了,今天只实现了登录功能,登陆之后更新导航条界面,最后效果如下: 登 ...
- vue从入门到开发--1-安装脚手架
一: 1.在文件目录下打开命令窗口(按住shift+右键[在此处打开命令窗口]或者直接ctrl+R打开命令窗口,利用cd选择到自己的文件目录) 2.$ npm install --global vue ...
- MediaRecord一些使用记录
今天学习了MediaRecord的使用,第一次使用做个记录. MediaRecord作用是声音录制,使用步骤如下: 1.新建出音频文件代码如下: 先创建出用于存储音频文件 File dir = new ...
- Mysql常用的优化技巧
1.通过show status 命令了解各种sql的执行效率 2. 定位执行效率较低的SQL语句 开启慢查询记录: 打开Mysql配置文件my.ini ,找到 [mysqld] 在其下面添加 long ...
- 起学习iOS开发专用词汇
今天的单词分别是: l Asynchronous 形容词 异步的 n 副词形式: asynchronously 异步地 n 缩写:ASYNC n 反义词:synchronous 形容词同步 ...
- search bar 自定义背景
//修改搜索框背景 self.searchCarKeyWord.backgroundColor=[UIColorclearColor]; //去掉搜索框背景 //1. [[self.searchCar ...