【每周一坑】​正整数分解质因数 +【解答】计算100以内质数之和

简介: 关于分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数只针对合数。

零基础python入门教程:python666.cn


大家好,欢迎来到 Crossin的编程教室 !


这周我们继续和“质数”死磕。


请听题:


将一个正整数分解质因数。如果是质数,则输出“这是质数”


关于分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数只针对合数。


例如:


输入 90,输出 2 3 3 5


输入 23,输出 这是质数


详细解答和参考代码将在下期栏目中给出,也可以参考其他同学在留言中的代码。


期待各位同学提交解答,更期待你能完成整个系列。

简单代码可直接在留言中提交,较长代码推荐使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可点击文章开头的合集“每周一坑”进入查看。


【解答】计算100以内质数之和


本题的常规思路是:


遍历 2~100:
    判断当前数是不是质数
    如果是质数,把值累加到结果上
输出结果


而判断质数的基本方法是:


遍历 2~待判断数:
    判断是否可以被当前数整除
    如果可以整除,则不是质数
如果遍历完毕都没有能整除的,则是质数


不过,这其中有不少可以优化的地方,让程序可以用更少的计算次数就可以得到结果。比如判断一个数N是否质数并不需要遍历 2~N,只需要到 √N 即可。


大家可以看看上一期里 @一个石头 的解答,是不错的一个优化方案:


def primeSum(N=100):  
    initial=[]    
    prime=0    
    node=int(N**0.5)+1    
    for i in range(2,node):       
        if 0 not in [i%pr for pr in initial]:            
            prime+=i            
            initial.append(i)    
    for i in range(node,N):
        if 0 not in [i%pr for pr in initial]:
            prime+=i    
    return prime
print(primeSum())

我上次也提到,要讲一个比较有意思的解法。这个解法的思路是与常规反着的,并不是判断谁是质数,而是去掉那些不是质数的:


创建 2~100 的列表L
如果列表L里还有值,则继续循环:
    把L[0]的值累加到结果上
    对于列表L中的元素,能被L[0]整除的通通不要,剩下的成为新的L

代码:


def primeSum(N=100):
    initial = list(range(2,N+1))
    prime = 0
    while len(initial) > 0:
        i = initial[0]
        prime += i
        initial = [num for num in initial if num % i != 0]
    return prime
print(primeSum())

结果就是 1060


_往期文章推荐_


【每周一坑】计算100以内质数之和

相关文章
|
11月前
|
网络协议 Unix Shell
FreeBSD的特点是什么?如何使用?
【10月更文挑战第29天】FreeBSD的特点是什么?如何使用?
349 2
|
存储 安全 API
【嵌入式系统】DMA工作原理与常用函数解析
【嵌入式系统】DMA工作原理与常用函数解析
1180 0
【嵌入式系统】DMA工作原理与常用函数解析
|
11月前
|
设计模式 网络协议 Java
09.外观模式设计思想
外观模式设计思想:为了解决软件系统中的复杂性和耦合性问题,外观模式提供了一组统一的接口,简化客户端与子系统的交互。主要内容包括外观模式的基础、实现、实例演示、应用场景、优缺点及适用环境。通过创建外观类,将复杂系统的内部实现细节隐藏起来,只暴露出简化的接口给客户端,从而降低耦合度,提高系统的可维护性和可扩展性。[更多内容](https://yccoding.com/)
107 2
基于GA遗传优化的TSP问题最优路线规划matlab仿真
本项目使用遗传算法(GA)解决旅行商问题(TSP),目标是在访问一系列城市后返回起点的最短路径。TSP属于NP-难问题,启发式方法尤其GA在此类问题上表现出色。项目在MATLAB 2022a中实现,通过编码、初始化种群、适应度评估、选择、交叉与变异等步骤,最终展示适应度收敛曲线及最优路径。
528 29
|
11月前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
388 5
|
Web App开发 数据可视化 JavaScript
动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
496 0
|
缓存 Linux 调度
[kvm]硬盘IO优化
[kvm]硬盘IO优化
206 2
|
移动开发 安全 数据安全/隐私保护
【教程】APP 加固的那些小事情
【教程】APP 加固的那些小事情
|
Java API
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
547 1
|
数据可视化 数据挖掘 Python
利用Python和Pandas对小费数据集进行数据分析与可视化实战(超详细 附源码)
利用Python和Pandas对小费数据集进行数据分析与可视化实战(超详细 附源码)
949 0