当前位置 博文首页 > 李江辰:Python:就区间正整数内所有素数之和

    李江辰:Python:就区间正整数内所有素数之和

    作者:[db:作者] 时间:2021-08-23 22:21

    前言

    Python的学习记录与分享——PTA程序设计类教学平台。如果你也正在学习关于此类的题目可以仔细阅读这篇文章,了解一下循环结构、素数的基本语法知识。

    题目:

    7-5就区间正整数内所有素数之和 (20分)

    【描述】求m-n以内所有素数之和并输出。???????????????????????????????????????????????????????????????????????????????????????素数指从大于1,且仅能被1和自己整除的整数。????????????????????????????????????????????????????????????????????????????????????????????????提示:可以逐一判断区间[m,n]之间以内每个数是否为素数,然后求和。??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????若m–n之间无素数,则输出“not have prime!”:
    输入格式:
    在一行输入2个正整数m,n。m可以大于n。例如计算1–100之间(包括100),可以输入100 1
    输出格式:
    若有素数,输出素数之和的一个整数,若该区间没有素数则输出not have prime!。
    输入样例:

    1 100

    输出样例:

    1060

    答案

    m, n = map(int, input().split())
    sum = 0
    if m > n:
        m, n = n, m
    for i in range(m, n+1):
        if i != 1:
            for j in range(2, i):
                if i % j == 0:
                    break
                else:
                    pass
            else:
                sum += i
    if sum == 0:
        print('not have prime!')
    else:
        print(sum)
    

    详细解析:

    首先了解什么是素数

    质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。

    • 举个例子:7这个数,从2开始一直到6,都不能被它整除,只有1和它本身(7)才能被整除,所以7就是一个质数。

    编写代码

    1. 根据题目要求:在一行输入2个正整数m,n。
    m, n = map(int, input().split())
    

    ? map()会根据提供的函数对指定序列做映射。它的返回结果是一个列表在

    ?????----这里的作用就是将多个输入值批量转换成in----
    ? split()方法指定分隔符对字符串进行切片,如果参数num 有指定值则仅分隔 num 个子字符串
    ????----这里的作用就是将输入的一条字符串以空格为分隔符切割----

    2. 首先学会判断一个数是不是素数的代码
    i=7							"用7举例"
    for j in range(2, i): 		"for循环让7除以2-7之间的数"
        if i % j == 0:
    		break  				"如果是i除j等于0说明不是素数直接(break)结束循环"
    	else:
    		print("是素数")
    

    ???????? range(start,end,step=)-----range(开始值,结束值,步长)没写默认为1

    3. 判断多个数是不是素数

    定义一个i,用for循环让i在里面m-n之间取值

    for i in range(m, n+1):
        if i != 1:						“开始的条件必须是i不能等于1for j in range(2, i):
                if i % j == 0:
                    break
                else:
                    pass
            else:
                sum += i				“如果是就在sum里面加上这个(i)素数”
    
    4. m、n从小到大排序
    	上面的素数判断都会了后会发现一个问题就是,如果用户输入100 1时运行会发生错误那么我们则需要在判断素数前保证m是小的值,n是大的值。
    
    if m > n:
        m, n = n, m
    
    5. 输出答案
    if sum == 0:						“如果sum在前面的整个for循环里都没有素数加入”
        print('not have prime!')				“那么输出'not have prime!'else:								“否则”
        print(sum)								“输出答案”
    
    // An highlighted block
    var foo = 'bar';
    

    结束

    如果你想觉得这篇博客对你有所帮助,点个赞吧。

    cs