博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode204.Count Primes
阅读量:4090 次
发布时间:2019-05-25

本文共 1557 字,大约阅读时间需要 5 分钟。

继续新的一天,懒人几天才做一道题,哎,没办法,太懒了加上还有其他的事。

这道题特么的又超时了------TLE-----

题目描述:Count the number of prime numbers less than a non-negative number, n.

---------------------------------------------------------------------------------------------------------------------------------

python

先贴出自己第一次实现的代码

def countprime(n):    count = 0    for j in range(2, n):        # is_prime = Isprime(j)        is_prime = True        for i in range(2, j):            item = j / float(i)            if item == int(item):                is_prime = False        if is_prime:            count += 1        else:            continue    return count

因为一直超时,百度找了个厄拉多塞筛法。

他的思想简单来说,就是划去法,先划去2-N这些数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数 是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。

class Solution(object):    def countPrimes(self, n):        """        :type n: int        :rtype: int        -- 厄拉多塞筛法 --        """        is_del = [True, True, False]  # 标记是否划去,0,1是false,2是true        for i in range(3, n):            if i % 2 == 0:                is_del.insert(i, True)  # 划去2的倍数            else:                is_del.insert(i, False)        for i in range(3, n):            if is_del[i] == False:  # 第一次未被划去                if i*i <= n:  # 素数的平方小于等于N                    j = 2                    while j*i < n:                        is_del[j*i] = True                        j += 1        count = 0        for i in range(2, n):            if is_del[i] == False:                count += 1        return count

思想很巧妙,反过来推。

转载地址:http://shyii.baihongyu.com/

你可能感兴趣的文章
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Qt 静态编译后的exe太大, 可以这样压缩.
查看>>
3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
查看>>
乘法逆元
查看>>
STL源码分析----神奇的 list 的 sort 算法实现
查看>>
Linux中用st_mode判断文件类型
查看>>
Ubuntu修改host遇到unable to resolve host
查看>>
路由选择算法
查看>>
Objective-C 基础入门(一)
查看>>
Objective-C 基础入门(三) 读写文件与回调
查看>>
C++ STL标准库与泛型编程(一)概述
查看>>
C++ STL标准库与泛型编程(四)Deque、Queue、Stack 深度探索
查看>>