打印出 python 中的素数列表
Print out a list of prime numbers in python
问题是:打印出1到1000之间满足两个条件的所有数字:
- 那些是质数
- 反转后的数也是质数。
例如,13 满足(因为 13 和 31 是质数),但 19 不满足(19 是质数,而 91 不是)。
我的代码:
def prime(n):
if n<2:
return False
for i in range(1, n):
if n%i == 0:
return False
else:
return True
def reverse(n):
List = []
while n>0:
List.append(n%10)
n = n//10
string = [str(integer) for integer in List]
a_string = "".join(string)
result = int(a_string)
print(result)
L = []
for i in range (1, 1000):
if prime(i) == prime(reverse(i)) == True:
L.append(i)
print(L)
我的似乎包含一些错误,因为结果不符合预期,要么显示 none 要么仍然在列表中显示 19。
提前致谢!
看来运行prime
两次效率很低。我会推荐以下内容:
def prime(n):
if n<2:
return False
for i in range(2, n):
if n%i == 0:
return False
return True
l = [i for i in range(1, 1001) if prime(i)]
print(*(x for x in l if int(str(x)[::-1]) in l))
首先你的 prime 方法是错误的,因为循环从 1
开始,并且每个数字都满足 n%1 == 0
,它需要从 2
开始
def prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
然后你的 reverse
方法 returns 什么都没有 所以 reverse(5)
给出 None
,你已经手动尝试了。
def reverse(n):
values = []
while n > 0:
values.append(n % 10)
n = n // 10
return int("".join(map(str, values)))
则条件简化为
for i in range(1, 20):
if prime(i) and prime(reverse(i)):
L.append(i)
反向过程也可以用字符串来完成,而且很短,可以内联
L = []
for i in range(1, 20):
if prime(i) and prime(int(str(i)[::-1])):
L.append(i)
问题是:打印出1到1000之间满足两个条件的所有数字:
- 那些是质数
- 反转后的数也是质数。 例如,13 满足(因为 13 和 31 是质数),但 19 不满足(19 是质数,而 91 不是)。 我的代码:
def prime(n):
if n<2:
return False
for i in range(1, n):
if n%i == 0:
return False
else:
return True
def reverse(n):
List = []
while n>0:
List.append(n%10)
n = n//10
string = [str(integer) for integer in List]
a_string = "".join(string)
result = int(a_string)
print(result)
L = []
for i in range (1, 1000):
if prime(i) == prime(reverse(i)) == True:
L.append(i)
print(L)
我的似乎包含一些错误,因为结果不符合预期,要么显示 none 要么仍然在列表中显示 19。 提前致谢!
看来运行prime
两次效率很低。我会推荐以下内容:
def prime(n):
if n<2:
return False
for i in range(2, n):
if n%i == 0:
return False
return True
l = [i for i in range(1, 1001) if prime(i)]
print(*(x for x in l if int(str(x)[::-1]) in l))
首先你的 prime 方法是错误的,因为循环从 1
开始,并且每个数字都满足 n%1 == 0
,它需要从 2
def prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
然后你的 reverse
方法 returns 什么都没有 所以 reverse(5)
给出 None
,你已经手动尝试了。
def reverse(n):
values = []
while n > 0:
values.append(n % 10)
n = n // 10
return int("".join(map(str, values)))
则条件简化为
for i in range(1, 20):
if prime(i) and prime(reverse(i)):
L.append(i)
反向过程也可以用字符串来完成,而且很短,可以内联
L = []
for i in range(1, 20):
if prime(i) and prime(int(str(i)[::-1])):
L.append(i)