2014-12-21 50 views
2

我想在python中編寫一個程序,它可以打印素數序列的第1到第n個數字,或打印素數序列的第n個數字。這是代碼。只打印素數序列的第n個數python

import math 

P = 2 
X = raw_input('Choose a number: ') 
Y = 1 

def prime(P, Y): 
    Choice = raw_input('Select 1 to print X numbers of the Prime sequence. \nSelect 2 to print the Xth number in the Prime sequence. \nWhat is your choice: ') 

    if Choice == "1": 
     while Y <= int(X): 
      isprime = True 
      for x in range(2, int(P) - 1): 
       if P % x == 0: 
        isprime = False 
        break 
      if isprime: 
       print P 
       Y += 1 
      P += 1 
    elif Choice == "2": 

prime(P, Y) 

基本上,我有第一個部分,所以它打印1到第n個數字的主要序列。然而,我對如何使它只計算第n個素數很感興趣,其中第n個素數是通過原始輸入給出的。在python中必須可以做到這一點,但是,它將如何完成,以及如何做到這一點,而不必添加太多的新變量,但我並不在這裏(儘管我會罰款這樣做)。幫助將不勝感激。

回答

1

就只有當它的第Y號打印:

if isprime: 
    Y += 1 
    if Y == X: 
     print P 
+0

真的,你有不管他們選擇什麼,都要以任何方式完成循環並計數到第X個素數;我只是將'if'移到循環內部,並且只要他們選擇1或X == Y就打印每個結果。 –

1

添加一個條件,這樣,如果要麼用戶想要打印的所有號碼,你已經達到了序列的最後質數,該號碼將被打印。 (我還更換了一些更描述那些變量名,並改變它,這樣的功能是通過number_of_primes作爲其唯一的參數,這似乎更有意義。)

def print_primes(X): 
    choice = raw_input('Select 1 to print X numbers of the Prime sequence. \nSelect 2 to print the Xth number in the Prime sequence. \nWhat is your choice: ') 
    count = 1 
    n = 2 
    while count <= X: 
     is_prime = True 
     for i in range(2, int(n) - 1): 
      if n % i == 0: 
       is_prime = False 
       break 
     if is_prime: 
      if choice == "1" or count == X: 
       print n 
      count += 1 
     n += 1 

number_of_primes = int(raw_input('Choose a number: ')) 
print_primes(number_of_primes)