當前位置:首頁 » 編程語言 » python求質數的演算法

python求質數的演算法

發布時間: 2022-02-25 09:37:38

『壹』 用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])

熱點內容
java如何運行程序 發布:2025-01-10 07:25:53 瀏覽:562
冒險島電腦連接伺服器失敗 發布:2025-01-10 07:23:01 瀏覽:823
安卓開發要學什麼語言 發布:2025-01-10 07:21:30 瀏覽:21
紹興編程培訓 發布:2025-01-10 07:16:53 瀏覽:300
java介面和類 發布:2025-01-10 07:09:14 瀏覽:403
discuzforlinux安裝 發布:2025-01-10 07:09:10 瀏覽:229
招行支票密碼器口令是多少 發布:2025-01-10 06:55:27 瀏覽:353
好的解壓拓展實力怎麼樣 發布:2025-01-10 06:49:18 瀏覽:699
租伺服器會自帶公網ip么 發布:2025-01-10 06:49:17 瀏覽:348
mfc中ftp上傳與下載 發布:2025-01-10 06:47:06 瀏覽:349