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结尾的质数?
发布于 2013-02-09 01:07:08
将您的数字修改为10,并在将其添加到最终列表之前检查它是否等于7。
if(i % 10 != 7):
print str(i)
list.append(i)发布于 2013-02-09 01:08:25
有很多方法可以实现你想要做的事情,你需要看看哪些方法适合你的特定问题。
解决这个问题的一个方法是:
(N)-你可以找出或查找某个地方的实现,我确信
然后:
yourlist = [x for x in xrange(2, 100) if isprime(x) and x % 10 != 7]这是一个很好的第一种方法,当然,还有更复杂的可能性,比如使用生成器、改进的Erasthothenes筛子等,但您可以在获得一个可用的筛子后探索这些选项。
发布于 2013-02-09 01:06:44
在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。此外,您还可以使用for循环的else部分,以避免使用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)并且当for循环在没有任何中断的情况下完成执行时,执行for的else。
虽然与实际问题没有直接关系,但你可以考虑使用Sieve of Eratosthenes算法,生成给定范围内的质数。
https://stackoverflow.com/questions/14777649
复制相似问题