首页 > 解决方案 > 列表中的素数函数python

问题描述

下面是我从斐波那契列表中制作素数列表的代码,但素数列表不起作用。

我错过了什么?我需要从斐波那契列表中制作一个素数列表。

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)

为什么素数列表不起作用?

标签: pythonlist

解决方案


我对您的代码进行了一些修复:

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. 您从未调用过该函数pr()。看起来有点,就像你不太确定函数是如何工作的,也许读一下它们(或者只是问一下 :))
  2. 既然您已经追加了ab那么为什么不使用正确的斐波那契数列(1、2、..)开始它们以避免重复呢?
  3. 我更改了代码以稍微查找素数,以使其更快一点。我确信这绝不是优化的,但至少它立即打破了循环,如果很清楚,我们没有质数。
  4. pr()您使用了append()没有参数的方法。您需要告诉程序您要附加到列表中的内容。据我所知,你有一个例外。

希望这个对你有帮助。


推荐阅读