Python 2.7 在python中查找任意范围之间的素数以及如何找出不重复的数
我不知道如何在我的列表中找出不重复的数字(素数),下面是我的代码:Python 2.7 在python中查找任意范围之间的素数以及如何找出不重复的数,python-2.7,Python 2.7,我不知道如何在我的列表中找出不重复的数字(素数),下面是我的代码: lower = int(input("Enter Lower: ")) upper = int(input("Enter Upper: ")) for num in range(lower,upper + 1): # prime numbers are greater than 1 if num > 1: for i in range(2,num): if (num % i
lower = int(input("Enter Lower: "))
upper = int(input("Enter Upper: "))
for num in range(lower,upper + 1):
# prime numbers are greater than 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
例如,我发现质数在100到130之间,这是
101
103
107
109
113
127
好的,但我怎么能只打印“103107109127”?
101,113是重复的数字。
set(num)函数不起作用。
非常感谢。您可以将打印例行程序更改为以下内容
# Convert to a string
str_num = str(num)
# Check whether the length of the string is equal to the number
# of unique digits using a set
repeating = len(set(str_num)) != len(str_num)
# Print if there are no repeating digits
if not repeating:
print num
使用此筛选功能只筛选一次不包含任何数字的数字:
def filter(num):
num_str = str(num)
return len(set(num_str)) == len(num_str)
像这样:
if filter(...):
print(...)
您可以通过每次将数字减少一位来实现,任何10位或更大的数字都将包含重复:
def is_unique(n):
if n > 9999999999:
return False
st = set()
while n:
n, rem = divmod(n, 10)
if rem in st:
return False
st.add(rem)
return True
只需在打印前检查:
lower = int(input("Enter Lower: "))
upper = int(input("Enter Upper: "))
for num in range(lower, upper + 1):
# prime numbers are greater than 1
if num > 1:
for i in range(2, num):
if (num % i) == 0:
break
else:
if is_unique(num):
print(num)
请详细说明哪些数字你不想打印出来,为什么101和113会重复?哦,对不起。数字在重复。我想选择不同的数字。没有重复的数字。有多少个数字必须重复才能被认为是重复的?如果素数是相同的数字,我不想选择它们。10到70素数之间:11--相同的数字13--不同的数字OK 17 OK 19 OK 23 OK 29 OK 31 OK 37 OK 41 OK 43 OK 47 OK 53 OK 59 OK 61 OK 67 OK我的意思是我不想在我的列表“11”中,因为相同的数字。非常感谢你们,我会在我的代码末尾添加你们的代码吗?但它不起作用。我会试试的,我知道了,谢谢。我没有收到错误消息,但我看到了相同的素数。(相同数字)