簡體   English   中英

我如何添加所有這些素數?

[英]How do I add all of these prime numbers?

我正在使用 python 並嘗試制作一個 function,它將生成從 1 到 1000 的所有素數,然后將所有素數相加。 到目前為止,我已經找到了所有素數的打印位置,但我對如何將它們相加感到困惑。 這是我的代碼:

lower = 0
upper = 1000

for num in range(lower, upper + 1):
   # all prime numbers are greater than 1
   if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)

這可以通過多種方式實現,但我向您介紹其中兩種:

1.) 使用列表

就我而言,我將其命名為The_list() 如果是素數,它會存儲所有值。 為此,我使用了.append() function。然后使用sum() function 對存儲的所有值求和。

lower = 0
upper = 1000
The_list = []

for num in range(lower, upper + 1):
   # all prime numbers are greater than 1
   if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)
           The_list.append(num)
print(sum(The_list))

2.)改用變量

lower = 0
upper = 1000
total = 0

for num in range(lower, upper + 1):
   # all prime numbers are greater than 1
   if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)
           total = total + num
print(total)

您可以編寫一個名為 get_total 的 function,它將返回質數之和。 這可以通過以下方式完成:

def get_total(lower, upper):
    total = 0
    for num in range(lower, upper + 1):
        if num > 1:
            for i in range(2, num):
                if (num % i) == 0:
                    break
            else:
                total += num
    return total

total_value = get_total(0,1000)
print(total_value)

通過這樣做,您可以重復使用這個 function 並為下限和上限寫入任何值。

使用total_sum變量並將其初始化為0 ,然后將num變量中的質數添加到其中:

lower = 0
upper = 1000
total_sum = 0
for num in range(lower, upper + 1):
   # all prime numbers are greater than 1
   if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)
           total_sum += num
print("Sum of the Prime numbers: {}".format(total_sum))

OUTPUT:

2個
3個
5個
. . .

983
991
997
質數之和:76127

只需在循環之前創建一個空列表,然后當您確定哪些數字是質數時,將它們 append 添加到列表中,最后調用sum()

lower = 0
upper = 1000
primes=[]

for num in range(lower, upper + 1):
   # all prime numbers are greater than 1
   if num > 1:
       mods = [(num % i == 0) for i in range(2, num-1)]
       if any(mods):
           break
       else:
           primes.append(num)
   else:
       continue

print(sum(primes))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM