2016-03-27 5 views
0

私はこれを使用して、指定された範囲内の素数のリストを作成するために管理:Python 3.5で与えられた範囲の素数の和はどうやって求められますか?

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) 

私はちょうど

print (sum(a)) 
を置くようになりまし範囲内の素数の全ての合計を見つけたいです

しかし、それをやろうとしたとき、私は次のようなトレースバックを得る:あなたのケースでは

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 

答えて

1

を、aは、あなたのループで使用されている整数変数でありますではなく、を繰り返します。我々はそれらを印刷するのではなく、行くように私たちはリストに追加した場合、リストprimessumを撮るとき

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)) 

だから、我々は次の出力を取得します。

Enter a number: 43 
281 
-1

和それらループ

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

内部あなたは合計を使用したい場合は、あなたが呼び出すための反復可能を持っているので、ループ内の各aを得、ジェネレータ関数を作ることができます合計:

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))) 
関連する問題