python函數(shù)求和素數(shù),python求素數(shù)之和

python求1~100之間的所有素數(shù)之和

解題思路:需要實現(xiàn)兩個函數(shù),一個是判斷數(shù)字是否是素數(shù);一個是求和函數(shù)。

創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導向”的快速反應體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、成都app開發(fā)、移動網(wǎng)站建設(shè)、微信網(wǎng)站制作、軟件開發(fā)、綿陽電信機房等實行標準化操作,讓客戶可以直觀的預知到從創(chuàng)新互聯(lián)公司可以獲得的服務效果。

實現(xiàn)函數(shù),判斷是否是素數(shù),is_prime,具體代碼如下:

def is_prime(num):

"""

判斷是否是素數(shù).

:param num:

:return:

"""

result = True

# 質(zhì)數(shù)大于 1

if num 1:

? # 查看因子

? for i in range(2, num):

? ? ? if (num % i) == 0:

? ? ? ? ? result = False

? ? ? ? ? break

? else:

? ? ? result = True

# 如果輸入的數(shù)字小于或等于 1,不是質(zhì)數(shù)

else:

? result = False

return result

實現(xiàn)函數(shù),計算數(shù)字start到end之間的所有素數(shù)之和,sum,具體代碼如下:

def sum(start, end):

"""

求閉區(qū)間[start, end]之間的素數(shù)之和.

: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函數(shù)中調(diào)用求和,代碼如下:

if __name__ == '__main__':

num = 8

print(is_prime(num))

num = 5

print(is_prime(num))

print(sum(1, 5))

完整 代碼如下:

python如何算質(zhì)數(shù)和

你好的!

import?math

def?is_prime(n):??#?簡化問題,先利用函數(shù)判斷是否為質(zhì)數(shù)

if?n?==?1:??#?=是賦值,==才是判斷,切記切記

return?False

for?i?in?range(2,?int(math.sqrt(n))+1):??#?質(zhì)數(shù)判斷條件,注意+1

if?n?%?i?==?0:

return?False

return?True

primes?=?[]

name?=?int(input())

for?i?in?range(1,?name):??#?注意這個逗號,很容易寫錯!

if?is_prime(i)?is?True:??#?bool值用is判斷

primes.append(i)

print('100以內(nèi)的素數(shù):{}\n100以內(nèi)素數(shù)和:{}'.format(primes,?sum(primes)))

歡迎追加懸賞并采納!

python求素數(shù)的個數(shù)

求素數(shù)本質(zhì)上的算法還是:除了1和它本身之外的數(shù)都不能整除的數(shù)。

在網(wǎng)上看到了一種用一行就解決的代碼:

" ".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的數(shù),x只要能對y整除,配上前面的if not,就是,x不能被2到x-1的數(shù)整除,再看前面一段,x for x in range(2,100) 其實就是讓x從2到100的取值。我們這假設(shè)題目就是求100內(nèi)的素數(shù)。其實代碼到這就得出結(jié)果了,只要在這些代碼外面加上[]就是一個列表生成式了:

[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() 方法用于將序列中的元素以指定的字符連接生成一個新的字符串。

下面是結(jié)果:

'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()把字符串解析成列表,然后給列表每一項都轉(zhuǎn)化成數(shù)字。

在數(shù)學里,我們還有種判斷素數(shù)的簡化方法:即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用while求100以內(nèi)素數(shù)并求和

# 用while求100以內(nèi)素數(shù)并求和

primes = []

n = 2

while n = 100:

i = 2

while i = int(n**(1/2)):

i += 1

if n % (i - 1) == 0:

break

else:

primes += [n]

n += 1

print(primes)

print(f'100以內(nèi)素數(shù)之和為{sum(primes)}')

程序縮進如圖所示

輸出1000以內(nèi)的素數(shù)及這些素數(shù)之和。用Python怎么做呀?

def prime(x):

for i in range(2,x):

if x%i==0:

return False

elif i==x-1:

return True

output=filter(prime,range(2,1001))#區(qū)分于map函數(shù)

output

b = list(output)

c = 0

for i in b:

c = c + i;

print(c)#我的是jupyter編譯器,如需要展示素數(shù)直接print(b)

網(wǎng)頁題目:python函數(shù)求和素數(shù),python求素數(shù)之和
標題來源:http://muchs.cn/article30/phispo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、移動網(wǎng)站建設(shè)、定制網(wǎng)站商城網(wǎng)站、軟件開發(fā)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)