整数序列的质数生成方法

判断一个数是否为质数,常采用的的方法是取取该数的开方a, 如果从2-a中都不能整除,那么该数为质数。

程面中,通常会让你计算某个范围内所有的质数。把上面的公式写成一个函数,然后一个一个判断是传统的解决方法。不过,质数还有一条重要性质

    不能被小于它的平方根的所有质数整除就是质数。

我们可以利用已找到的质数来判断当前数是否为质数,这样可减少一些不必要的计算操作。

代码示例

import math


a = range(2, 1000)  # a = [2, 3, 4, 5, 6, 7, ..., 1000], 所有质数设置为0
a[2] = 0
cur = 4
while cur < len(a):
    for i in range(math.sqrt(cur)):
        if a[i] == 0:
            continue
        if a[cur] % a[i] == 0:
            a[cur] = 0
            break
    cur += 1
v = [i for i in a if i != 0]
print v
print 'size', len(v)

这不是什么新发现,不过在答题时用了不寻常的方法,应该会比较得到面试官的青睐。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值