当前位置: 首页 > 面试题库 >

Python中的简单Prime生成器

阳兴朝
2023-03-14
问题内容

有人可以告诉我这段代码在做什么吗?无论如何,它只是打印“计数”。我只想要一个非常简单的素数生成器(没什么花哨的)。

import math

def main():
    count = 3
    one = 1
    while one == 1:
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0: 
                continue
            if count % x != 0:
                print count

        count += 1

问题答案:

有一些问题:

  • 当计数不除以x时,为什么要打印计数?这并不意味着它是素数,仅意味着该特定x不会将其除
  • continue 移至下一个循环迭代-但你确实想使用停止它 break
    这是你的代码,其中包含一些修复程序,它仅输出质数:
import math

def main():
    count = 3

    while True:
        isprime = True

        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0: 
                isprime = False
                break

        if isprime:
            print count

        count += 1

有关更有效的质子生成,请参见其他人的建议,参见戊二烯筛。这是一个不错的,经过优化的实现,带有很多注释:

# Sieve of Eratosthenes
# Code by David Eppstein, UC Irvine, 28 Feb 2002
# http://code.activestate.com/recipes/117119/

def gen_primes():
    """ Generate an infinite sequence of prime numbers.
    """
    # Maps composites to primes witnessing their compositeness.
    # This is memory efficient, as the sieve is not "run forward"
    # indefinitely, but only as long as required by the current
    # number being tested.
    #
    D = {}

    # The running integer that's checked for primeness
    q = 2

    while True:
        if q not in D:
            # q is a new prime.
            # Yield it and mark its first multiple that isn't
            # already marked in previous iterations
            # 
            yield q
            D[q * q] = [q]
        else:
            # q is composite. D[q] is the list of primes that
            # divide it. Since we've reached q, we no longer
            # need it in the map, but we'll mark the next 
            # multiples of its witnesses to prepare for larger
            # numbers
            # 
            for p in D[q]:
                D.setdefault(p + q, []).append(p)
            del D[q]

        q += 1

请注意,它返回一个生成器。



 类似资料:
  • 本文向大家介绍python uuid生成唯一id或str的最简单案例,包括了python uuid生成唯一id或str的最简单案例的使用技巧和注意事项,需要的朋友参考一下 介绍: UUID是128位的全局唯一标识符,通常由32字节的字符串表示。 使用: uuid1()——基于MAC地址、当前时间戳、随机数生成。 uuid3()——基于名字的MD5散列值。 uuid4()——基于随机数,有一定的重复

  • 问题内容: 我目前正在阅读Python,目前正在研究生成器。我发现很难回头。 从Java的背景出发,是否有Java的等效语言?这本书讲的是“生产者/消费者”,但是当我听说线程的时候。 什么是发电机,为什么要使用它?显然,无需引用任何书籍(除非您可以直接从书籍中找到一个体面,简单的答案)。也许举一些例子,如果您感到慷慨! 问题答案: 注意:本文采用Python 3.x语法。† 一个发电机仅仅是它返回

  • Open Source GraphQL CMS Prime is a standalone, self-hosted, headless CMS with a GraphQL interface powered by TypeScript. Why Prime? There are a lot of headless SaaS solutions out there, and many of th

  • 本文向大家介绍python 实现红包随机生成算法的简单实例,包括了python 实现红包随机生成算法的简单实例的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇python 实现红包随机生成算法的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Python使用tablib生成excel文件的简单实现方法,包括了Python使用tablib生成excel文件的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python使用tablib生成excel文件的方法。分享给大家供大家参考,具体如下: 这是一个基本的最简单的使用tablib生成excel文件的示例,首先要安装tablib模块,在命令行输入:pip