Python 返回严格小于n的素数的函数

Python 返回严格小于n的素数的函数,python,python-3.x,Python,Python 3.x,问题在于nbPremiers,如果n=2,它会在应该为0时返回给我2。前两个函数是正确的,它们的工作方式完全符合我的要求。最后一个方法是将原始数的数目严格地计算为小于n。您的代码中有几个错误;其中一个与i和n相混淆-为参数使用更好的名称将对您有所帮助 请注意,0和“1”不是素数 def estDiviseur(i,n): return n%i==0 def estPremier(n): b=0 if n==1: return False for

问题在于nbPremiers,如果n=2,它会在应该为0时返回给我2。前两个函数是正确的,它们的工作方式完全符合我的要求。最后一个方法是将原始数的数目严格地计算为小于n。

您的代码中有几个错误;其中一个与
i
n
相混淆-为参数使用更好的名称将对您有所帮助

请注意,
0
和“1”不是素数

def estDiviseur(i,n):
    return n%i==0

def estPremier(n):
    b=0
    if n==1:
        return False
    for i in range(1 , n+1):
        if estDiviseur(i,n)==True:
            b=b+1
    if b>2:
            return False
    else:
            return True

def nbPremiers(n):
    c=0
    for i in range(0,n):
        if estPremier(i)==True:
            c=c+1
    return c

您的代码中有几个错误;其中一个与
i
n
相混淆-为参数使用更好的名称将对您有所帮助

请注意,
0
和“1”不是素数

def estDiviseur(i,n):
    return n%i==0

def estPremier(n):
    b=0
    if n==1:
        return False
    for i in range(1 , n+1):
        if estDiviseur(i,n)==True:
            b=b+1
    if b>2:
            return False
    else:
            return True

def nbPremiers(n):
    c=0
    for i in range(0,n):
        if estPremier(i)==True:
            c=c+1
    return c

所有这些函数都可以编写为一行程序:

0 False 0
1 False 0
2 True 0
3 True 1
4 False 2
5 True 2
6 False 3
7 True 3
8 False 4
9 False 4
10 False 4
11 True 4
12 False 5
13 True 5
14 False 6
15 False 6
16 False 6
17 True 6
18 False 7
19 True 7
无论你来自哪个国家,用英语写函数名通常是个好主意,尤其是当你在一个国际性的英语网站上提问时

注意,您只需要检查2和
sqrt(n)
之间的除数

一个更有效的方法是使用


最后,这通常是为小于或等于
n

的素数定义的。所有这些函数都可以写成一行:

0 False 0
1 False 0
2 True 0
3 True 1
4 False 2
5 True 2
6 False 3
7 True 3
8 False 4
9 False 4
10 False 4
11 True 4
12 False 5
13 True 5
14 False 6
15 False 6
16 False 6
17 True 6
18 False 7
19 True 7
无论你来自哪个国家,用英语写函数名通常是个好主意,尤其是当你在一个国际性的英语网站上提问时

注意,您只需要检查2和
sqrt(n)
之间的除数

一个更有效的方法是使用


最后,这通常是为小于或等于
n

的素数定义的?这不是一个未使用的变量,所以请命名它。FWIW,我建议最好使用英文名称,而不是法文名称,因为这样对国际社会来说更容易。我可能会把
est\u premier
中最后的
b
内容简化为
返回b2是一个素数,用变量表示,这很好。增加翻译更正2。谢谢你的建设性发言。非常感谢!但最后的问题是:如果是最好的(n),它是最好的(i),而且一切都很好地工作?这不是一个未使用的变量,所以请命名它。FWIW,我建议最好使用英文名称,而不是法文名称,因为这样对国际社会来说更容易。我可能会把
est\u premier
中最后的
b
内容简化为
返回b2是一个素数,用变量表示,这很好。增加翻译更正2。谢谢你的建设性发言。非常感谢!但最后的问题是:如果条件为n,那么它就是if-est-premier(i),并且一切都正常工作。顺便说一句,如果某个条件为True,那么通常最好编写
而不是
。请参见.BTW,如果某个条件为
,则通常最好编写
,而不是如果某个条件=True:
,则编写
。看见