python求質數的演算法
『壹』 用python求1到100所有的質數
判斷素數的 函數
再 用循環 遍歷 輸出 單個質數
『貳』 Python求質數
如下:
importmath
defm(a,b):
ret=0
forxinrange(a,b+1):
foryinrange(2,int(math.sqrt(x))+1):
ifx%y==0:
break
else:
ret+=1
print(ret)
輸入:m(3,7)
得到:3
『叄』 請問怎麼用python函數求數字n最近的質數
fun函數有邏輯錯誤,改成:
##注意:最左邊每個=表示一個空格
def fun(m):
====for i in range(2,m):
========if m%i==0:
============return False
====return True
『肆』 python中如何編程求1到100之間的素數
#!/usr/bin/python
#-*- coding:UTF-8 -*-
#求素數
list=[]
i=2
for i in range (2,100):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
list.append(i)
print(list)
(4)python求質數的演算法擴展閱讀:
python:for語句的使用方法
for循環的語法格式:
for i in range(n):#從數據類型中拿一個值賦值給i
print(i)#列印i
例如:
#for
for i in range (1,6,2):#從一開始到六之前每隔上2個數字
print(i)#結果為1,3,5
# ------------------------------------------------
s = ["man", "woman", "girl", "boy", "sister"]
for i in s:#列表s中的每個元素給i
print(i)
#-------------------------------------------------
for i in range(5):
print(i)#結果為:0,1,2,3,4
for循環實例:數字0,1,2組成一個百位數,並且數字不重復!
#for
for i in range(0,3):
for j in range(0,3):
for k in range(0,3):
if (i != 0) and (i != j) and (i != k) and (j != k):
print (i,j,k)
『伍』 python如何算質數和
你好的!
importmath
defis_prime(n):#簡化問題,先利用函數判斷是否為質數
ifn==1:#=是賦值,==才是判斷,切記切記
returnFalse
foriinrange(2,int(math.sqrt(n))+1):#質數判斷條件,注意+1
ifn%i==0:
returnFalse
returnTrue
primes=[]
name=int(input())
foriinrange(1,name):#注意這個逗號,很容易寫錯!
ifis_prime(i)isTrue:#bool值用is判斷
primes.append(i)
print('100以內的素數:{} 100以內素數和:{}'.format(primes,sum(primes)))
歡迎追加懸賞並採納!
『陸』 Python求100000以為的質數代碼詳解
定義變數k為0,這里沒有用處,因為你下面每次遍歷都重新賦值為0
定義一個列表,存儲了第一個質數2,因為他是唯一一個偶數,所以單獨存進去
遍歷[3,100000)的所有整數,取出每一個數字之後,分別除以列表中的數字,如果某一個能被除盡,則代表它不是質數(根據任何合數都能被質數除盡的規則),break跳出裡面的循環。
判斷結果,如果是質數則加入列表,否則不做什麼事情。
最後輸出這個由質數組成的列表。
『柒』 python中編程求1到100之間的素數有幾種方法
六種。
方法一: 窮舉法
方法二: 開方減"半"法
方法三:去除偶數法
方法四:使用列表法。
方法五:素數性質法
方法六: 埃拉托斯特尼篩法
拓展資料:Python由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python 也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上
Python已經成為最受歡迎的程序設計語言之一。自從2004年以後,python的使用率呈線性增長。Python 2於2000年10月16日發布,穩定版本是Python 2.7。Python 3於2008年12月3日發布,不完全兼容Python 2。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言。
由於Python語言的簡潔性、易讀性以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經採用Python來教授程序設計課程。例如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python語言講授。眾多開源的科學計算軟體包都提供了Python的調用介面,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。而Python專用的科學計算擴展庫就更多了,例如如下3個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別為Python提供了快速數組處理、數值運算以及繪圖功能。因此Python語言及其眾多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、製作圖表,甚至開發科學計算應用程序。2018年3月,該語言作者在郵件列表上宣布Python 2.7將於2020年1月1日終止支持。用戶如果想要在這個日期之後繼續得到與Python 2.7有關的支持,則需要付費給商業供應商。
『捌』 python求素數的個數
求素數本質上的演算法還是:除了1和它本身之外的數都不能整除的數。
在網上看到了一種用一行就解決的代碼:
" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])
對這段代碼分解,最後一段列表生成式[y for y in range(2,x) if x%y == 0]這個就是核心演算法y是從2到x-1的數,x只要能對y整除,配上前面的if not,就是,x不能被2到x-1的數整除,再看前面一段,x for x in range(2,100) 其實就是讓x從2到100的取值。我們這假設題目就是求100內的素數。其實代碼到這就得出結果了,只要在這些代碼外面加上[]就是一個列表生成式了:
[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]
那麼為什麼還加上了" ".join("%s" % 。。。)這段代碼呢?其實只是格式化美觀罷了,"%s" %是一種字元串格式化的語法, 基本用法是將值插入到%s佔位符的字元串中,join() 方法用於將序列中的元素以指定的字元連接生成一個新的字元串。
下面是結果:
'2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97'
這樣解析出來是個字元串還不能分割,所以我重新改了一下:
a = (" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])).split()
list1 = []
for item in (a):
list1.append(int(item))
print(list1)
split()把字元串解析成列表,然後給列表每一項都轉化成數字。
在數學里,我們還有種判斷素數的簡化方法:即y的取值范圍是2到x的平方根+1
import math
(" ".join("%s" % x for x in range(2,100) if not [y for y in range(2, int(math.sqrt(x))+1) if x%y == 0])).split()
下面是一種正常的演算法:
import math
num = []
i = 2
for i in range(2,100):
j = 2;
for j in range(2,int(math.sqrt(i)+1)):
if (i%j==0):
break;
else:
num.append(i)
print(num)
『玖』 python求1~100之間的所有素數之和
解題思路:需要實現兩個函數,一個是判斷數字是否是素數;一個是求和函數。
實現函數,判斷是否是素數,is_prime,具體代碼如下:
def is_prime(num):
"""
判斷是否是素數.
:param num:
:return:
"""
result = True
# 質數大於 1
if num > 1:
# 查看因子
for i in range(2, num):
if (num % i) == 0:
result = False
break
else:
result = True
# 如果輸入的數字小於或等於 1,不是質數
else:
result = False
return result
實現函數,計算數字start到end之間的所有素數之和,sum,具體代碼如下:
def sum(start, end):
"""
求閉區間[start, end]之間的素數之和.
:param start:
:param end:
:return: """
result = 0;
for i in range(start, end + 1):
if is_prime(i):
print(i)
result = result + i
return result
在main函數中調用求和,代碼如下:
if __name__ == '__main__':
num = 8
print(is_prime(num))
num = 5
print(is_prime(num))
print(sum(1, 5))
完整 代碼如下:
『拾』 python演算法:求100000以內間隔最大的一組質數的間隔。
來的有點晚了,正在寫百萬以內素數間隔,給你看一個MATLAB的演算法作參考
希望有幫助
下面的內容是編寫成m文件的,
然後運行
a=primes(2000000);
b=a(1:end-1);
c=a(2:end);
jg=c-b;
jgs=unique(jg);
cs=[];
for i=jgs
cs=[cs,sum(jg==i)];
end;
disp('間隔和間隔出現次數')
disp([jgs;cs])