栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021-11-08(Python) a、输出10-1000之间所有质数 b、将这些质数相乘,输出积的后5位数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-11-08(Python) a、输出10-1000之间所有质数 b、将这些质数相乘,输出积的后5位数

Python编程题
a、输出10-1000之间所有质数
b、将这些质数相乘,输出积的后5位数
(20分钟内要写出完整代码,本来是一个很容易的题,第一眼也感觉不难,起码算法明晰;可是没有经过上机实验,光在纸上面写还是差点感觉,忽略了很多东西,现在复盘一下)

求质数的基本算法

质数:除了1和它本身之外不能被其他数所整除
所以只需用该数对2到它本身的所有数循环取余,若所有余数不为0,则为质数。(采用循环,若存在余数为0的情况,break)
以下为基本算法。

#求质数
a=int(input('请输入一个数:'))
for i in range(2,a):
    if a%i==0:
        print('%d不为质数'%a)
        break
else:
    print('%d为质数'%a)
优化求质数基本算法

循环次数可以缩减,可缩减到所求数本身的一半或开更号。
采用开更号的算法

#求质数(优化)
import math
a=int(input('请输入一个数:'))
n=int(math.sqrt(a))
for i in range(2,n+1):
    if a%i==0:
        print('%d不为质数'%a)
        break
else:
    print('%d为质数'%a)

分析题目算法

a.输出10到1000之间的所有质数(算法已解决)
利用一个循环结构循环range(10,1001),再嵌套一个求质数的循环算法

for i in range(10,1001):
    n=int(math.sqrt(i))
    for j in range(2,n+1):
        if(i%j==0):
            break
    else:
        list.append(i)      #使用一个列表保存这些质数

b.将这些质数相乘,输出积的后5位数
(起初并没有思考过数据是否溢出的问题,目前我的掌握程度也不足以让我考虑到这类问题,结果误打误撞居然也没出错,python yyds)
在循环内就计算出所有质数相乘的结果,使用整型数据保存,由于需要输出积的后5位,再将结果的数据类型转换成字符串,利用切片输出后5位。

import math
list=[]  #储存质数的空列表
sum=1
for i in range(10,1001):
    n=int(math.sqrt(i))
    for j in range(2,n+1):
        if(i%j==0):
            break
    else:
        list.append(i)
        sum=sum*i
s=str(sum)    #将相乘所得结果转换成字符串类型
print(list)
print('n')
print(s)
print('n')
print(s[-5:])

运行结果:

总结

还有很多东西需要学习,题目确实不难,算法也很明晰,就是在编写过程中要学会拆分目标,一步一步分析完成。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号