Torry从小喜爱数学,有一天,老师告诉它,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?于是乎,他把这个问题告诉给了老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你计算出前n个质数的乘积。不过,考虑到你刚学习编程不久,Torry只要求你算出这个数模上50000的值。(为了降低难度,我们规定n<=100000)。
![a32125f7bb72e00c6a9934557d28e36d.png](https://img-blog.csdnimg.cn/img_convert/a32125f7bb72e00c6a9934557d28e36d.png)
爱学习的Torry
啊哈,这可是Torry第一次有求于你,我想你一定不想让他失望,并且此时你的大脑已经飞速运转起来了。那么给你5分钟的思考时间,如果你已经有了思路,那就快快使用Python代码来验证吧。如果还没有思路,不要着急,跟我继续往下看。
知识回顾
在我们正式开始探索之前,需要先一起回忆下质数的概念,避免有些同学不太清楚或者已经忘记了。
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,例如2、3、5、7、11……
![49b44a731cd7eddc4d709bc42285d0dc.png](https://img-blog.csdnimg.cn/img_convert/49b44a731cd7eddc4d709bc42285d0dc.png)
100以内的质数表
程序编写
对于这个问题,我们一起来分析,首先我们需要找出前n个质数都有哪些,然后再来计算他们的乘积模上50000的值。
那么如何使用代码来实现呢?接下来我们以Python编程为例,来解决Torry的困惑。记住,算法是跨语言的,任何编程语言都支持逻辑判断和循环等,如果你想使用别的编程语言来实现当然也是可以的。
1) 编写判断质数的函数:
我们定义了如下函数,这个函数需要传入一个参数n,并判断n是否为质数,如果是,则返回True,否则返回False。
![cbd3efeb720f23558b94fb00db943bd1.png](https://img-blog.csdnimg.cn/img_convert/cbd3efeb720f23558b94fb00db943bd1.png)
判断是否为质数的函数
2) 用户输入n,并进行有效性校验:
![611689b45ba507c145d0d47f4590e4c0.png](https://img-blog.csdnimg.cn/img_convert/611689b45ba507c145d0d47f4590e4c0.png)
输入和有效性校验
3) 定义变量:
定义一个用于记录质数个数的变量count、质数乘积的变量product,并从第一个质数 j=2 开始运算。
![06463a2dee5b32aa8b154d479f2a5060.png](https://img-blog.csdnimg.cn/img_convert/06463a2dee5b32aa8b154d479f2a5060.png)
定义变量
4) 具体逻辑代码:
我们使用while循环来逐次调用前文定义的isZhishu函数进行判断,并累计乘积。
![36842039bc6b381bb084072cd3042c4f.png](https://img-blog.csdnimg.cn/img_convert/36842039bc6b381bb084072cd3042c4f.png)
循环判断
5) 完整的编程代码:
下面列出完整的编程代码,便于你一气呵成的阅读和思考。
![499c8a3f5f18cad8636853d855f9462c.png](https://img-blog.csdnimg.cn/img_convert/499c8a3f5f18cad8636853d855f9462c.png)
完整代码
让我们一起来试试程序的运行效果吧,例如我们输入100:
> 请输入n:100前100个质数的乘积是:31090
简单吗?相信你一定会觉得很简单,但又很实用。学习算法,一定要善于思考生活中还有哪些应用场景,并把所学的算法和编程知识用于解决生活中遇到的实际问题,相信你的编程和算法水平一定会稳步提升,加油!
![92092a43b8dbf64a92e4aa713dc114a8.png](https://img-blog.csdnimg.cn/img_convert/92092a43b8dbf64a92e4aa713dc114a8.png)
创意编程之旅