0.题目如下:

  By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

  What is the 10 001st prime number?

1.先理解什么是素数:

  质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。

2.怎么判断是否是素数:

  方法一:在一般领域,对正整数n,如果用2到  之间的所有整数去除,均无法整除,则n为质数。

  方法二:1.解释一下代码第29行,在6的倍数两侧可能存在着素数,如:

          2 3 5 (6) 7 11 (12) 13 17 (18) 19 23 (24) 29 (30) 31 (36) 37 ......

         注意:在6的倍数两侧只是可能存在素数,不在6的倍数两侧就一定不是素数。

       2.方法二剩下的代码就是孪生素数的问题,自行百度吧

3.顺带提一下,最高效的办法是方法二。可以自行测试。

 import time
#sqrt是开方
from math import sqrt def check1(prime):
if prime == 1:
return False
for i in range(2, int(sqrt(prime)) + 1):
if prime % i == 0:#能被除尽就不是素数
return False
return True #main1
# 在一般领域,对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。
def main1(num):
prime = 0
x = 0
while x < num:
prime += 1
if check1(prime):
x += 1
return prime def check2(prime):
i = 5
if prime == 2 or prime == 3:
return True
if prime % 6 != 1 and prime % 6 != 5:
return False
while i <= sqrt(prime):
if prime % i == 0 or prime % (i + 2) == 0:#孪生素数 自行百度
return False
i += 6
return True #main2参考链接
#http://blog.csdn.net/huang_miao_xin/article/details/51331710 def main2(num):
prime = 1
x = 0
while x < num:
prime += 1
if check2(prime):
x += 1
return prime if __name__ == '__main__':
#给出两种解决的方法
start_time1 = time.time()
print(main1(10001))
print(time.time() - start_time1)
start_time2 = time.time()
print(main2(10001))
print(time.time() - start_time2)

来自projecteuler.net网站的练习题1的更多相关文章

  1. 来自projecteuler.net网站的练习题2

    0.题目如下: Each new term in the Fibonacci sequence is generated by adding the previous two terms. By st ...

  2. [翻译]How to Find a Solution ( 如何找到问题的答案,来自Top Coder 网站)

    原文链接: https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/ ...

  3. struts2集成fckeditor(来自大型门户网站是这样练成的一书)

  4. [译]MVC网站教程(二):异常管理

    介绍 “MVC网站教程”系列的目的是教你如何使用 ASP.NET MVC 创建一个基本的.可扩展的网站. 1)   MVC网站教程(一):多语言网站框架 2)   MVC网站教程(二):异常管理 3) ...

  5. 关注经典:CSS Awards 获奖网站作品赏析《第一季》

    每天都有很多新的网站推出,其中不乏一些设计极其优秀的作品.这个系列的文章,我为大家挑选了2012年赢得 CSS Awards 大奖的50个最佳网站.这些鼓舞人心的网站作品代表了网页设计的最高水平,相信 ...

  6. 经典算法和OJ网站(开发者必备-转)

    一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...

  7. 精通Web Analytics 2.0 (3) 第一章:网站分析的新奇世界

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第一章:Web Analytics 2.0的新奇世界 多年以来,我们很清楚的知道,网站分析能够真正的改革网络上业务的完成方式.那 ...

  8. l来自wentao:项目加入缓存(redis),实时调试时用 -----可视化缓存,flushdb

    下文来自segmentfault,网站:一个交流网站:https://segmentfault.com/ 在做一个项目时如果加入缓存(例如redis),我如何进行实时调试呢? 缓存 高并发 架构 gz ...

  9. 如何防止ASP.NET网站遭受CSRF的攻击

    转载地址: http://www.cnblogs.com/shanyou/p/5038794.html?hmsr=toutiao.io&utm_medium=toutiao.io&ut ...

随机推荐

  1. Node.js之错误处理与断言处理

    Node.js之错误处理与断言处理 1. 使用 domain 模块处理错误 try..catch 多用于捕捉同步方法中的抛出错误,但不能用try..catch捕捉异步方法中抛出de错误 如: 1 va ...

  2. CASE WHEN 及 SELECT CASE WHEN的用法(转)

    Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END   ...

  3. 优秀的PE工具收藏

    优秀的PE工具收藏... ----------------------- ------------------------------------------<排名不分先后..自己喜欢的就是最好 ...

  4. face ++ 人脸识别技术初步

    网站地址: https://console.faceplusplus.com.cn/documents/5671791主要有        1  人脸识别技术         2    人体识别技术  ...

  5. Volley源码学习笔记

    标签(空格分隔): Volley 创建RequestQueue 使用Volley的时候,我们首先需要创建一个RequestQueue对象,用于添加各种请求,创建的方法是Volley.newReques ...

  6. python绘图:matplotlib和pandas的应用

    在进行数据分析时,绘图是必不可少的模式探索方式.用Python进行数据分析时,matplotlib和pandas是最常用到的两个库.1.matplotlib库的应用准备工作如下:打开ipython,输 ...

  7. 优雅的H5下拉刷新【minirefresh】

    序 严格的来说,这是我第一个完全投入的开源项目,它的出现是为了统一移动H5中的下拉刷新,想通过一套框架,多主题拓展方式,适应于任意需求下的任意下拉刷新场景. 另外,这个项目作为独立项目存在,希望能有更 ...

  8. StringBuffer .insert方法输出电话号码格式

    package ch11; import java.util.Scanner; /** * Created by liwenj on 2017/7/21. */public class T7 { pu ...

  9. pycharm激活

    刚刚下载了2017.1版本专业版的pycharm,作为一个天朝开发者,自然是去找注册码了.转悠了一圈,那些注册码都已经失效了.看到一个有效的方法:把http://elporfirio.com:1017 ...

  10. TC358743XBG:HDMI转MIPI CSI参考设计

    TC358743XBG参考设计电路图如下, 功能HDMI转MIPI CSI ,通信方式:IIC,分辨率1920*1080,封装形式BGA64.