---恢复内容开始---

1007. 素数对猜想 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

让我们定义 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素数猜想的更多相关文章

  1. Android中图片优化之webp使用

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 有关图片的优化,通常我们会用到LruCache(使用强引用.强 ...

  2. [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)

    [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...

  3. NowCoder猜想(素数筛法+位压缩)

    在期末被各科的大作业碾压快要窒息之际,百忙之中抽空上牛客网逛了逛,无意中发现一道好题,NowCoder猜想,题意很明显,就是个简单的素数筛法,但竟然超内存了,我晕(+﹏+)~  明明有 3 万多 k ...

  4. PAT Basic 1007 素数对猜想 (20) [数学问题-素数]

    题目 让我们定义 dn 为:dn = pn+1 – pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想"认为"存在⽆穷多对 ...

  5. PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数

    PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...

  6. CF735D Taxes 哥德巴赫猜想\判定素数 \进一步猜想

    http://codeforces.com/problemset/problem/735/D 题意是..一个数n的贡献是它的最大的因子,这个因子不能等于它本身 然后呢..现在我们可以将n拆成任意个数的 ...

  7. [原]Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)

    本文出自:http://blog.csdn.net/svitter/ 题意: 求解An 与 An-1是否相等. n分为两个情况-- 1.n为素数, 2.n为合数. =  =好像说了个废话..素数的时候 ...

  8. [原]素数筛法【Sieve Of Eratosthenes + Sieve Of Euler】

    拖了有段时间,今天来总结下两个常用的素数筛法: 1.sieve of Eratosthenes[埃氏筛法] 这是最简单朴素的素数筛法了,根据wikipedia,时间复杂度为 ,空间复杂度为O(n). ...

  9. hihoCoder 1493 : 歌德巴赫猜想 素数筛法

    题意:哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和".给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?如果有多组解,输出P最小的一 ...

随机推荐

  1. SpringMVC-Handler-Return Values返回值

    Handler-Return Values返回值 支持的返回类型列表 Same in Spring WebFlux The table below shows supported controller ...

  2. 下面给出了四种设计模式的作用: 外观(F

    下面给出了四种设计模式的作用: 外观(Fa?ade :为子系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用: 装饰(Decorate):当不能采用生成子类的方法进行扩充时,动 ...

  3. 前端生成全球唯一码GUID

    function GUID() { this.date = new Date();  //先new一个时间备用 GUID.prototype.newGUID = function () { this. ...

  4. npm scripts 常用规范总结

    npm scripts 常用规范总结 随着 npm scripts 使用越来越多,需要规范一下, npm run 的使用词. 定义 我定义如下形式: npm run <action>:&l ...

  5. 理解C#系列 / 前言

    前言 索引 写什么? 为什么写? 怎么写? 写什么? 写和C#编程相关的知识. 写知识的定义,附加对知识的理解. 写知识的作用,使用的场景,使用的条件. 写知识的本质,技术的结构,工作的原理. 写知识 ...

  6. 前端之css(宽高)设置小技巧

    一.css宽高自适应: 1.宽度自适应: 元素宽度设为100%(块状元素的默认宽度为100%) 注:应用在通栏效果中 2.高度自适应: height:auto;或者不设置高度 3.最小,最大高度,最小 ...

  7. linux下mysql中文乱码

    登录mysql执行mysql> show variables like 'character%';发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my.c ...

  8. MySql中查询语句实现分页功能

    import java.util.*;import java.sql.*; public class FruitDao {    private Connection conn;    private ...

  9. 自动完成文本框(AutoCompleteTextView与MultiAutoCompleteTextView)关联适配器

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  10. 重置Cacti密码

    Cacti登录密码忘记,重置Cacti密码 用root用户进入系统 [root@localhsot]# mysql -u root -p mysql> show databases; mysql ...