首页 > 编程语言 >python习题-筛法求素数

python习题-筛法求素数

时间:2023-04-12 20:48:23浏览次数:43  
标签:prime 筛法 python 合数 int 素数 print 习题 输入

题目描述

用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。

【基本思想】

用筛法求素数的基本思想是:把从2到N的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。

【源代码程序】

def sieve(n, m):
    """
    输入两个正整数n和m,返回[n,m]范围内的所有素数的列表
    """
    # 初始化一个长度为m-n+1的列表,用于标记数值是否为素数
    is_prime = [True] * (m - n + 1)
    # 如果n为1,则将1标记为合数
    if n == 1:
        is_prime[0] = False
    # 从2开始,将所有能被2整除的数标记为合数
    for i in range(2, int(m ** 0.5) + 1):
        for j in range(max(i ** 2, (n + i - 1) // i * i), m + 1, i):
            if j >= n and is_prime[j - n]:
                is_prime[j - n] = False
    # 将所有未被标记为合数的数加入素数列表
    primes = [i + n for i in range(m - n + 1) if is_prime[i]]
    return primes


# 输入n和m
n, m = map(int, input("请输入n和m(1 < n < m < 1000):").split())
if not 1 < n < m < 1000:
    print("输入有误,请重新输入")
    n, m = map(int, input("请输入n和m(1 < n < m < 1000):").split())
else:
    print("该范围内的所有素数为:", end='')
    print(sieve(n, m))

运行测试

 

标签:prime,筛法,python,合数,int,素数,print,习题,输入
From: https://www.cnblogs.com/mendianyu/p/17311148.html

相关文章

  • python(十一):小型数据库:shelve
     Python中shelve模块是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的,可以作为一个简单的数据存储方案。使用时,只需要使用open函数获取一个shelf对象,然后对数据进行增删改查操作,在完成工作、并且将内存存储到磁盘中,最后调用close函数变回将......
  • python习题-验证6174猜想
    【题目描述】1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。【源代码程序】de......
  • python习题-杨辉三角
    【题目描述】输出n(0<n)行杨辉三角形,n由用户输入。【源代码程序】n=int(input("请输入要打印的杨辉三角的行数:"))#初始化杨辉三角的第一行triangle=[[1]]#循环生成杨辉三角foriinrange(1,n):#初始化当前行的第一个元素为1row=[1]#循环生成当......
  • 20230412-Python-pycharm使用技巧
     1.新建文件,自动生成代码       2.自动补齐自定义段落        3.修改注释颜色        ......
  • Python的函数的缺省值参数(空列表)之坑
    Fromhttps://www.jianshu.com/p/9f899d829562 defadd(x,lst=[]):ifnot(xinlst):lst.append(x)returnlstlist1=add(1)print(list1)list2=add(2)print(list2)list3=add(3,[11,12,13,14])print(list3)list4=add(4)print(list4......
  • Python程序笔记20230304
    抛硬币实验random模块importrandomrandom.randint(a,b)返回一个随机整数N,范围是:a<=N<=brandom.choice("ilovefishc")从"ilovefishc"这个字符串中随机选出一个字符。编写一个双色球的开奖模拟程序importrandomred=random.sample(range(1,34),6)blue=r......
  • C++第二章课后习题2-29,2-30
    2-29在程序中定义一个整型变量,倔以1~100的值。要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while、do…while语句实现循环。#include<iostream>usingnamespacestd;intmain(){inta=56;cout<<"请输入您要猜的数(0......
  • Python+selenium点击网页上指定坐标
     fromseleniumimportwebdriverfromselenium.webdriver.common.action_chainsimportActionChainsdefclick_locxy(dr,x,y,left_click=True):'''dr:浏览器x:页面x坐标y:页面y坐标left_click:True为鼠标左键点击,否则为右键点击''&#......
  • (三)python多进程multiprocessing模块的变量传递问题:父进程中的numpy.array对象隐式序列
    参考:https://docs.python.org/zh-cn/3/library/multiprocessing.htmlcloudpickle——Python分布式序列化的专用模块python多进程multiprocessing模块的变量传递问题:父进程中的numpy.array对象隐式序列化到子进程后的inplace操作的问题-Death_Knight-博客园(cnblogs.com)......
  • python之封装mysql
     数据查询类封装1.功能分析可以连接不同sql数据库查一条数据,多条数据可以获取不同格式的数据2.封装成数据库查询类封装思路:数据库查询模块有多个功能,且需要复用,所以封装成类在构造方法中创建连接创建对象方法实现各种查询#-*-coding:utf-8-*-#@Time......