我正在尝试创建一个程序,该程序在输入的数字下面列出所有素数,然后我想到了代码:
def primes():
num = 20
numlist = list(range(1,num+1))
i = len(numlist)
for j in numlist[2:]:
ans = divisible(j,i)
if ans:
numlist.remove(j)
print(numlist)
def divisible(m,n):
if m!=n and m%n==0:
return True
elif n == 1:
return False
else:
divisible(m, n-1)
primes()
((我使用了浏览器内置的IDE,因此num
部分是输入的代理。)
我的想法是创建一个单独的函数divisible()
,当输入两个整数m
和n
时,它将检查n
是否除以m
。我不确定自己的递归是否正确,但是我写了divisible(m,n-1)
的想法是,它将迭代从n
向下的所有整数,如果有True
除以n
,它将返回m
],如果到达False
,则为1
。
在主代码中,m
遍历list
中的所有数字,而n
是同一list
中元素的总数。我将print(numlist)
放在if
语句中作为错误检查。我遇到的问题不是打印。代码实际上什么也没返回。在这里,递归的工作方式我缺少什么吗?
您的可除函数如果属于其他部分,则不会返回任何内容。更改为
def divisible(m, n):
if m!=m and m%n==0:
return True
elif n==1 :
return False
else:
return divisible(m,n-1)
这应该工作