list = []
for i in range(2,100):
primeflag=True
for num in list:
if(i%num==0):
primeflag=False
if(primeflag):
print str(i)
list.append(i)
print list
我应该用什么来删除以7结尾的素数?
答案 0 :(得分:1)
将您的数字修改为10,并在将其附加到最终列表之前检查它是否等于7。
if(i % 10 != 7):
print str(i)
list.append(i)
答案 1 :(得分:1)
有很多方法可以实现您想要做的事情,并且您需要了解哪些方法适合您的特定问题。
解决这个问题的一种方法:
然后:
yourlist = [x for x in xrange(2, 100) if isprime(x) and x % 10 != 7]
这是一个很好的第一种方法,当然还有更复杂的可能性,例如使用发生器,修改过的Erasthothenes Sieve等,但是你可以在工作之后探索这些选项。
答案 2 :(得分:0)
在python中,您可以使用str
函数将任何数值转换为字符串表示。
所以,你可以这样做: -
num = 17
str_num = str(num)
然后,要测试不等于7的最后一个数字,您可以访问该字符串的最后一个字符,并将其与'7'
进行比较。要访问最后一个字符,请使用str_num[-1]
。
所以,你需要的条件是: -
if str_num[-1] != '7':
# don't add it to list
另外,你的内循环似乎不正确。您正在检查i
的模数,将其除以list
中的每个数字,而应检查模数直到i ** 0.5
。此外,您可以使用else
循环的for
部分,以避免使用boolean flag
。因此,您修改的代码应该看起来像
for i in range(2,100):
for num in range(2, int(i ** 0.5) + 1):
if(i % num == 0):
break
else:
if str(i)[-1] != '7':
my_list.append(i)
当else
循环完成执行而没有任何中断时,for
的{{1}}被执行。
虽然与实际问题没有直接关系,但您可以考虑签出Sieve of Eratosthenes算法,以生成给定范围内的素数。