2016-11-24 10 views
-1

N個の素数を見つけるために次のコードを書いた。しかし、私はリストにそれを格納するのに問題があります。最初のN個の素数をリストに格納するPythonプログラム?

Enter the number of prime numbers to be displayed: 5 
    [2, 3, 5, 7, 11] 

をしかし、私はプログラムを実行するときのように、私は出力を得る:

 def prime(n): 

     global count 
     s=0 
     flag=0 
     ls=[] 
     for i in range(2,n/2+1): 
        if(n%i==0): 
          flag=1 
          break 

     if(flag==0): 
       print n 
       ls.append(n) 
       count=count+1 
     print ls 

    # main pro 
    n=input("Enter the number of prime numbers to be displayed: ") 
    print"The prime numbers are:" 
    count=0 
    x=2 
    while(count<n): 
      prime(x) 
      x+=1 

私の所望の出力は次のようになります、私は変更せずにリストに素数を追加するにはどうすればよい

Enter the number of prime numbers to be displayed: 5 
    The prime numbers are: 
    2 
    [2] 
    3 
    [3] 
    [] 
    5 
    [5] 
    [] 
    7 
    [7] 
    [] 
    [] 
    [] 
    11 
    [11] 

上記のコード?? 後で要素を追加する必要がありますか?私はPythonには新しいので、すべての助けに感謝します!ありがとうございました!

+0

宣言は 'あなたが各反復でそれを再作成している、世界的にls'しました。 –

+0

しかし、私のような出力を取得しています: [2] を[2、3] [2、3] [2、3、5] [2、3、5] [2、3、5、7] [2,3,5,7] [2,3,5,7] [2,3,5,7] [2,3,5,7,11] 1回の印刷方法終わり? –

+0

ありがとうございました! –

答えて

0

これはcount素数の配列が返されます:

def get_primes(count): 
    primes = [] 

    n = 2 
    while len(primes) != count: 
     for i in range(2, n // 2 + 1): 
      if n % i == 0: 
       break 
     else: 
      primes.append(n) 
     n += 1 

    return primes 

そうようにあなたがそれを使用することができます。

n=input("Enter the number of prime numbers to be displayed: ") 
array_of_n_prime_numbers = get_primes(n) 
print("The prime numbers are:", array_of_n_prime_numbers) 
+0

上記のコードでは、リストをグローバルに宣言しなければならないことを理解しました。 \t しかし、私は次のような出力を得ています:[2,3] [2,3] [2,3,5] [2,3,5] [2,3,5,7] [2,3] [2、3、5] 、[5、7] [2,3,5,7] [2,3,5,7] [2,3,5,7,11]最後に一度印刷するには?ありがとうございました! –

+0

@AanandhiVB 'print("素数は: "、array_of_n_prime_numbers)' –

+0

@AanandhiVBあなたは世界中のリストを宣言する必要はありません –

0

この

def prime(x): 
    if x<1: 
     return [] 
    prime_numbers = [2,3] 
    if x<3: 
     return prime_number[:x] 
    for i in range(2,x): 
     next_pn = prime_numbers[-1]+2 
     while any(not(next_pn%pn) for pn in prime_numbers): 
      next_pn += 2 
     prime_numbers.append(next_pn) 
    return prime_numbers 

N = input("Enter the number of prime numbers to be displayed:") 
print (prime(int(N))) 

出力

Enter the number of prime numbers to be displayed:5 
[2, 3, 5, 7, 11] 
0123を試しを

は、すべての数値を反復処理する必要はなく、その前に素数だけを反復処理することができます。

+0

ありがとうございます! –

+0

あなたの目的を果たした場合は、答えを受け入れ、upvote –

0

ここで簡単な方法です:入力が5のとき

def prime(n): 
    ls = [2,3] 
    if (n < 3): 
     return ls[:n] 
    for i in range(2,n): 
     generate = ls[-1]+2 
     while any(not(generate%num) for num in ls): 
      generate += 2 
     ls.append(generate) 
    return ls 



n = int(input("Enter the number of prime numbers to be displayed:")) 
print (prime(n)) 

出力:

[2, 3, 5, 7, 11] 
関連する問題