簡體   English   中英

列表中的質數 function python

[英]prime number function python from list

下面是我的代碼,用於從 Fibonacci 列表中創建素數列表,但素數列表不起作用。

我錯過了什么? 我需要從斐波那契列表中創建一個素數列表。

a1 = []
a2 = []
count = 0
n = int(input())


def fib(n):
    a = 1
    b = 1
    a1.append(a)
    a1.append(b)
    for i in range(n):
        c = a + b
        a = b
        b = c
        if len(a1) <= n - 1:
            a1.append(c)
    print(a1)
    print(len(a1))


fib(n)


def pr(a1):
    count = 0
    for i in a1:
        for j in range(2, i):
            if i % j == 0:
                count += 1
        if count > 0:
            a2.append()
    print(a2)

為什么素數列表不起作用?

我對您的代碼做了一些修復:

def fib(n):
    a = 1
    b = 2
    a1.append(a)
    a1.append(b)
    for i in range(n):
        c=a+b
        a=b
        b=c
        if len(a1)<=n-1:
            a1.append(c)
    print(a1)
    print(len(a1))
    

def pr(a1):
    for i in a1:
        isPrime = True
        for j in range(2,i):
            if i % j == 0:
                isPrime = False
                break
        if isPrime:
            a2.append(i)
            
    print(a2)

a1=[]
a2=[]
n=int(input())
fib(n)
pr(a1)
  1. 您從未調用過 function pr() 看起來有點,就像你不太確定函數是如何工作的,也許讀一下它們(或者只是問問:))
  2. 既然你已經 append ab ,為什么不用正確的斐波那契數列 (1, 2,..) 開始它們以避免重復?
  3. 我更改了代碼以稍微查找素數,以使其更快一點。 我確信這絕不是優化的,但至少它立即打破了循環,如果很明顯,我們沒有素數。
  4. pr()中,您使用了不帶參數的append()方法。 你需要告訴程序你想要什么 append 到列表中。 據我所知,這是您遇到異常的地方。

希望這個對你有幫助。

試試下面的代碼。 編輯您的代碼,a2 將在斐波那契列表中給出質數。

a1 = []
    a2 = []
    
    def recur_fibo(n):
       if n <= 1:
           return n
       else:
           return(recur_fibo(n-1) + recur_fibo(n-2))
    
    n = 10
    
    if n > 0:
       for i in range(n):
           a1.append(recur_fibo(i))
    
    for num in a1:
      if num > 1:
        for i in range(2,num):
            if (num % i) == 0:
                break
        else:
            a2.append(num)
    
    print(a2)

暫無
暫無

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

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