ProxyPass /public-server-proxy http://192.168.1.1:80/my-dir
ProxyPassReverse /public-server-proxy http://192.168.1.1:80/my-dir
ProxyPassReverseCookiePath /public-server-proxy /
问题在于nbPremiers,如果n = 2,当它应该为0时,它返回给我2。第一个函数是正确的,它们完全按照我的意愿工作。最后一个是计算严格小于n的原始数字。
答案 0 :(得分:2)
所有这些功能都可以写成一行:
from math import sqrt
def is_divisor(i,n):
return n % i == 0
def is_prime(n):
return n >= 2 and not any(is_divisor(i, n) for i in range(2,int(sqrt(n)) + 1))
def primes_count(n):
return sum(1 for x in range(2,n+1) if is_prime(x))
print(primes_count(100))
# 25
无论您来自哪个国家/地区,使用英语编写功能名称通常都是个好主意,特别是如果您在国际英语网站上提问。
请注意,您只需要检查2和sqrt(n)
之间的除数。
更有效的方法是使用sieve of Erathostenes。
最后,此prime-counting function通常定义为低于或等于n
的素数。
答案 1 :(得分:1)
你的代码中有几个错误;其中一个与i
和n
混淆 - 使用更好的参数名称会对你有帮助。
请注意0
和'1'不是素数。
def est_diviseur(diviseur, n):
return n % diviseur == 0
def est_premier(n):
b = 0
if n < 2:
return False
for diviseur in range(1, n+1):
if est_diviseur(diviseur, n) == True:
b = b + 1
if b > 2:
return False
else:
return True
def nb_de_premiers_inferieurs_a(nombre):
"""retourne le nombre de nombres premiers inferieurs a n
returns the number of primes whose value is lower than n
"""
compteur = 0
for n in range(nombre):
if est_premier(n):
compteur += 1
return compteur
for n in range(20):
print(n, est_premier(n), nb_de_premiers_inferieurs_a(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