编程找出100以内的质数并求和

本文将会介绍如何使用编程语言找出100以内的所有质数并求和。而质数,指的是只能被1和它本身整除的数字。

一、判断质数的算法

要找出100以内的质数,首先要搞清楚什么是质数,以及如何判断一个数是不是质数。我们可以采用最简单粗暴的方法——暴力枚举所有小于等于该数的正整数,然后判断能否被整除。但这种方法显得低效且烦琐,因此我们需要采用更为高效的方法——埃氏筛法。

埃氏筛法,顾名思义就是埃拉托色尼筛法的简称。埃拉托色尼是一位古希腊人,他提出了一种筛选质数的方法。埃氏筛法是一种用来查找一定范围内素数的算法,该算法以空间换时间,在一定范围内求质数比暴力枚举有效得多。

根据埃氏筛法,我们先把2~n之间的所有数字列出来,然后把2留下;把所有2的倍数删除掉,然后把下一个留下;再把剩下的数中第一个是3的倍数的数留下,再删掉所有3的倍数。依此类推,直到把n内所有的素数都留下来,也就是所谓的素数表。这个过程中不要忘了每次留下一个新的素数并剔除其倍数。

二、代码实现

下面给出Python语言的代码实现,使用埃氏筛法查找100以内的素数并求和:

def prime_numbers(n):
    """
    :param n: 限制的范围。例如找100以内的素数,n=100
    :return: 返回n以内的全部素数
    """
    lst = range(2,n)
    p = 2
    while True:
        lst = filter(lambda x: x % p != 0 or x == p, lst)
        # lambda表达式:简单表达式,x如果不是p的倍数或x本身就是p,就保留它
        p = lst[0]
        if p ** 2 > n:
            break
    return lst

# 调用函数并求和
result = sum(prime_numbers(100))
print(result)

这个函数首先构建了一个不包括0和1的列表,然后从2开始一步步筛选出素数。其中,利用filter()函数来实现一个筛选器,筛掉能被当前素数整除的数。这里使用的是lambda表达式,这个表达式实际上定义了一个函数对象。最后,如果遍历完素数表中所有的偶数,余下的是奇数,就是n以内的所有素数。最后对素数进行求和。

三、算法分析

代码实现利用了时间复杂度为O(nlogn)的算法。其原理是倍数法,但是在实现时采用了filter函数来进行筛除。由于filter函数也要对每个值都进行比较,所以时间复杂度略高。但相比直接暴力枚举,这种算法还是足够高效的。

借助埃氏筛法找出100以内的素数并求和,就是这样简单而又高效的。我们通过学习这个例子,小小的认识了一下时间复杂度和空间换时间的思想,相信会有不少收获。

原创文章,作者:DBCSD,如若转载,请注明出处:https://www.506064.com/n/375054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
DBCSDDBCSD
上一篇 2025-04-28 13:17
下一篇 2025-04-29 12:49

相关推荐

  • Python如何判断质数和异常处理

    本文主要介绍Python如何判断质数和异常处理,其中包括多个方面的内容。 一、判断质数 1、定义:质数是指除了1和它本身两个因数外,没有其他的因数。 2、判断方法: (1)从2到n…

    编程 2025-04-29
  • Python判断质数方法用法介绍

    本文将介绍如何用Python判断一个数是否为质数。其中,我们将从多个方面进行阐述,包括质数的定义、判断方法、算法优化等内容,希望对Python初学者或对质数感兴趣的读者有所帮助。 …

    编程 2025-04-27
  • c语言产生质数数组文档介绍内容,输出质数c语言程序

    本文目录一览: 1、C语言 质数 怎么做啊 2、输出100以内的质数,用c语言编写 3、C语言的质数算法求教! 4、C语言求素数数组 5、C语言如何实现质数输出 6、C语言 素数 …

    编程 2025-01-14
  • c语言中质数的判断,质数判断C语言

    本文目录一览: 1、C语言判断一个数是否是质数 2、c语言怎么判断一个数是素数 3、c语言判断质数 4、C语言编程:判断某数是否是质数 5、c语言判断一个数是否为质数 C语言判断一…

    编程 2024-12-31
  • 质数js代码,判断一个数为质数的代码

    本文目录一览: 1、用JavaScript代码,求100以内的质数,求解答,代码 2、如何用javascript编写出出1到100的素数? 3、怎样用JavaScript编写从1到…

    编程 2024-12-28
  • 用 Python 求质数

    介绍 质数是只能被1和本身整除的自然数,在密码学和计算机科学中常被用到。Python是一种高效、易学易用的编程语言,很适合进行质数计算。本文将介绍Python求质数的方法和相关的编…

    编程 2024-12-27
  • c语言判别质数,怎么用c语言判断质数

    本文目录一览: 1、c语言判断一个数是否为质数 2、C语言判断一个数是否是质数 3、c语言判断质数 4、C语言输入一个整数,判断是否是质数? c语言判断一个数是否为质数 #incl…

    编程 2024-12-24
  • c语言100内质数相加,用c语言求1000以内的完全数之和

    本文目录一览: 1、用C语言编程 100内的质数之和 2、用c语言求100以内的素数之和 3、用c语言求一百以内的质数和 用C语言编程 100内的质数之和 main() { int…

    编程 2024-12-23
  • 用Python实现判断质数的简单算法

    在数学中,质数(prime number)又称素数,指在大于1的自然数中,除了1和该数自身以外不再有其他因数的自然数。例如2、3、5、7等都是质数,而4、6、8等则不是质数。判断一…

    编程 2024-12-22
  • java输入数字,JAVA输入数字判断是否为质数

    本文目录一览: 1、java如何输入数字? 2、用java输入一个整数,判断1到整数之间所有的”完数“? 3、在JAVA中怎么从键盘输入一个数字 用什么关键字 4、JAVA如何让用…

    编程 2024-12-20

发表回复

登录后才能评论