2016-03-27 14 views
0

Bunu kullanarak belirli bir aralıkta asal sayıların bir listesini oluşturmak için yönetilen:Python 3.5'de verilen bir aralıktaki asal sayıların toplamını nasıl bulurum?

Sadece
print (sum(a)) 

indirdi yüzden şimdi aralığında asal sayıların toplamını bulmak istiyoruz
import numpy as np 

num = int(input("Enter a number: ")) 

for a in range(2,num+1):   
    maxInt=int(np.sqrt(a)) + 1 
    for i in range(2,maxInt): 
    if (a%i==0): 
     break 
    else: 
    print (a) 

Ama bunun için çalışırken, ben aşağıdaki Traceback olsun:

senin durumunda
Traceback (most recent call last): 
    File "C:/Users/Jason/PycharmProjects/stackidiots/scipuy.py", line 11, in <module> 
    print(sum(a)) 
TypeError: 'int' object is not iterable 

cevap

1

, a Döngünüzden kullanılan bir tamsayı değişken bir varlıktır, yinelenemez. Onları yazdırmak yerine giderken biz sadece bir listesine eklenir eğer listede primes ait sum çekerken

import numpy as np 

num = int(input("Enter a number: ")) 

primes = [] 

for a in range(2,num+1): 

    maxInt= int(np.sqrt(a)) + 1 

    for i in range(2,maxInt): 

    if (a%i==0): 
     break 

    else: 
    primes.append(a) 

print(sum(primes)) 

Yani, biz şu çıktıyı olsun.

Enter a number: 43 
281 
-1

Sum onları toplamını kullanmak istiyorsanız aramak için bir iterable var öyleyse, bir jeneratör işlevi yapmak döngü içinde her a elde olabilir

import numpy as np 

num = int(input("Enter a number: ")) 

result=0 
for a in range(2,num+1):   
    maxInt=int(np.sqrt(a)) + 1 
    for i in range(2,maxInt): 
    if (a%i==0): 
     break 
    else: 
     print (a) 
     result+=a 

print(result) 
0

döngü içinde toplamı:

num = int(input("Enter a number: ")) 

def sum_range(num): 
    for a in range(2, num + 1): 
     maxInt = int(a **.5) + 1 
     for i in range(2, maxInt): 
      if a % i == 0: 
       break 
     else: 
      yield a 

print(sum(sum_range(num))) 
İlgili konular