leetcood學習筆記-204-計算質數

題目描述:

?

第一次提交;(超時):

class Solution:def countPrimes(self, n: int) -> int:count = 0for i in range(2,n):for j in range(2,i+1):if i%j == 0 and j!=i:breakif j==i:count+=1return count

別人家的:

這題搜到一個非常牛逼的算法,叫做厄拉多塞篩法. 比如說求20以內質數的個數,首先0,1不是質數.2是第一個質數,然后把20以內所有2的倍數劃去.2后面緊跟的數即為下一個質數3,然后把3所有的倍數劃去.3后面緊跟的數即為下一個質數5,再把5所有的倍數劃去.以此類推.代碼的實現上用了非常好的技巧:def countPrimes(self, n: int) -> int:if n < 3:return 0     else:# 首先生成了一個全部為1的列表output = [1] * n# 因為0和1不是質數,所以列表的前兩個位置賦值為0output[0],output[1] = 0,0# 此時從index = 2開始遍歷,output[2]==1,即表明第一個質數為2,然后將2的倍數對應的索引# 全部賦值為0. 此時output[3] == 1,即表明下一個質數為3,同樣劃去3的倍數.以此類推.for i in range(2,int(n**0.5)+1): if output[i] == 1:output[i*i:n:i] = [0] * len(output[i*i:n:i]) #注意[0]# 最后output中的數字1表明該位置上的索引數為質數,然后求和即可.return sum(output)
在上面遍歷索引的時候用到了一個非常好的技巧. 即i是從(2,int(n**0.5)+1)而非(2,n).這個技巧是可以驗證的,比如說求9以內的質數個數,那么只要劃掉sqrt(9)以內的質數倍數,剩下的即全為質數. 所以在劃去倍數的時候也是從i*i開始劃掉,而不是i+i.

?

轉載于:https://www.cnblogs.com/oldby/p/10547992.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449573.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux man

nameman - 即 manual &#xff0c;在線查看命令手冊。 描述man 是一個系統手冊&#xff0c;man 的每一個選項通常是命令名&#xff0c;查找顯示選項中的每個相關聯的手冊頁&#xff0c;默認操作按照指順序&#xff0c;按屏打印顯示。 下表顯示手冊章節號&#xff0c;以及它們包…

centos-install-kong-cassandra

轉自&#xff1a;http://blog.54im.com/2016/12/15/centos-install-kong-cassandra/#前置閱讀 對于一些傳統的大型項目&#xff0c;傳統的方式會有一些缺陷&#xff0c;比如說新人熟悉系統成本高&#xff08;因為整個系統作為一個整體&#xff0c;彼此會有一定的牽連&#xff0…

akshare做mfi策略

#!/usr/bin/env python # coding: utf-8#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd import numpy as np import matplotlib.pyplot as plt#正常顯示畫圖時出現的中文和負號 from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] …

第二章學習小結

第二章學習小結 對比于上學期所學的知識&#xff0c;能切實感覺到這個學期的課程更加深入和抽象&#xff0c;在學習上難度也有所增加&#xff0c;雖然上個學期就聽老師推薦過博客園&#xff0c;但是真正開始寫博客還是第一次&#xff0c;最直觀的感受就是在完成博客的過程中&am…

翁同龢后人向上海博物館捐贈兩件重要家藏

1月24日&#xff0c;翁萬戈先生捐贈書畫儀式在上海博物館內舉行。 上海博物館 供圖 1月24日&#xff0c;翁萬戈先生捐贈書畫儀式在上海博物館內舉行。 上海博物館 供圖 中新網上海1月24日電 (王笈)翁同龢后人翁以鈞24日攜夫人柳至善&#xff0c;代表翁萬戈將兩件翁氏家族的重要…

mysql數據庫操作

連接mysql from sqlalchemy import create_engine import pandas as pd import numpy as np import matplotlib.pyplot as plt import pymssql from scipy.interpolate import interp1dfrom datetime import timedelta #正常顯示畫圖時出現的中文和負號 from pylab import mpl…

AutoHotkey調用VBA實現批量精確篩選數據透視表某字段內容。

如上圖&#xff0c;想在數據透視表中只顯示紅色區域的內容&#xff0c;手動勾選就比較繁瑣。 實現思路&#xff1a; 先復制紅色的內容。鼠標停留在數據透視表【型號】列的任意數據上&#xff08;通過該單元格可以獲取數據透視表和字段&#xff09;由于數據透視表的字段不能全部…

SQL中的case when then else end用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Case具有兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數 CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Case搜索函數…

HEVC/H265 性能分析

HEVC/H265 標準中的目標是&#xff1a;H264的碼率一般&#xff0c;質量一樣&#xff0c;是否達到&#xff0c;數據說話。 下面是視頻編解碼大師測試數據&#xff1a; HEVC: is it really twice as good as H.264? The new standard for video compression, High Efficiency V…

“90后”臺灣籍乘務長的第一個大陸春運

中新網上海1月25日電 題&#xff1a;“90后”臺灣籍乘務長的第一個大陸春運 中新網記者 李佳佳 黃佳瑩&#xff0c;“90后”的臺北妹子。年紀雖小&#xff0c;資歷卻不淺&#xff0c;2018年她晉升為春秋航空客艙部乘務長&#xff0c;成為大陸首批臺灣籍乘務長之一。“90后”臺灣…

mysql+tushare搭建本地數據庫

創建股票數據庫 #!/usr/bin/env python # -*- coding: utf-8 -*- # Date : 2018-09-04 14:34:59 # Author : Michael Li # Version : $V2.0$import pandas as pd import numpy as np import datetime import random import pymssql from sqlalchemy import create_engine …

hbase單機搭建

一、下載 https://hbase.apache.org/downloads.html  2.1.3版本 解壓&#xff0c;拷貝到文件夾 /hbase/hbase-2.1.3 設置HBASE_HOME環境變量&#xff0c;把它加到path環境變量中去 source /etc/profile 二、配置 &#xff11;.在/data下創建目錄 mkdir /data/hbase mkdir /d…

mysql查詢報錯: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我的情況 &#xff1a; Mysql 5.7.21 版本運行sql 報錯如題&#xff0c;同樣的 sql 直接本地運行不報錯。 但是當連接的是服務器上的 …

多股票投資組合+馬科維茨計算組合

import matplotlib.pyplot as plt from pandas import read_excel import numpy as np import tushare as ts import pandas as pd import datetime token prots.pro_api(token) 獲取財務數據 #獲取財務數據 ticker_list [601318.SH,601336.SH,601398.SH,601888.SH,603993.S…

并發編程(十六)——java7 深入并發包 ConcurrentHashMap 源碼解析

以前寫過介紹HashMap的文章&#xff0c;文中提到過HashMap在put的時候&#xff0c;插入的元素超過了容量&#xff08;由負載因子決定&#xff09;的范圍就會觸發擴容操作&#xff0c;就是rehash&#xff0c;這個會重新將原數組的內容重新hash到新的擴容數組中&#xff0c;在多線…

[邊分治+線段樹合并]「CTSC2018」暴力寫掛

題目梗概 給出兩棵1為根的樹,求\(d[x]d[y]-d[lca(x,y)]-d[lca(x,y)]\)的最大值 解題思路 套路化簡之后\((d[x]d[y]dis(x,y)-2*d[lca(x,y)])/2\) 第二棵樹上的lca化不掉,所以考慮在第二棵上枚舉lca 先說說這題的解法,邊分樹的合并. 邊分和點分有什么區別,邊分在合并類似\(d[x]d[…

HEVC/H265 文檔獲得

HEVC/H265文檔是很重要的標準&#xff0c;因為代碼有時由于效率問題而修改&#xff0c;這是最重要的參考&#xff1a; HEVC approved by ITU-T and ISO/IEC "Geneva, 25 January 2013 – A new video coding standard building on the PrimeTime Emmy award winning IT…

期權計算隱含波動率

牛頓迭代法 from scipy.stats import norm import numpy as np def bscall(S,K,r,sigma,t):d1(np.log(S/K)(r0.5*sigma**2)*t)/(sigma*np.sqrt(t))d2d1-sigma*np.sqrt(t)return S*norm.cdf(d1)-K*np.exp(-r*t)*norm.cdf(d2) def bsput(S,K,r,sigma,t):d1(np.log(S/K)(r0.5*sigm…

進擊的二維碼 | ArcBlock 課堂預告

ArcBlock Technical Learning Series 第十七期進擊的二維碼本周三&#xff0c;1 月 30 日下午 1:30 時 &#xff08;美國太平洋時間 29日下午 21:30 時&#xff09;&#xff0c;由 ArcBloc 后端工程師孫博山 授課。復制代碼二維碼源于日本,如今世界各國都在使用。一張簡單的二維…