C语言:查找打印质数(素数)

这个题是很灵活的,有几种解法,也有很多种优化方法,这里,我来谈谈一种个人感觉比较容易理解的方法。

首先,要知道质数(素数)是什么?

质数(素数)是除了1和它本身,不能再被其他数整除的数。

那么,知道这个后,就可以来编程了。

先打印出100-200中的质数(素数)

100到200当然不可能是一个一个打出来了,必定要使用循环弄出100-200,比如:

然后,就看看100-200中的某个数符不符合除了1和它本身,不能再被其他数整除,我们就可以从2开始,看能不能被2整除,如果不能,则变成3、4、5……直到除到他本身-1,如果都不能整除,那么,就可以打印出这个数。过程如下图:

这时候会发现,我们定义了一个新的变量--add,为什么要定义这个变量呢?

原因是这个变量可以在不满足条件的时候变成0;在满足条件的情况,则会保持原来的数值不变,然后就可以打印出来。最值得注意的是,这个变量 add 是不能放在全局变量位置的,它是一定要放在第一个循环的局部变量中的,这样才能使每次循环过后,都恢复成原来所定义的数值,避免代码运行结果不符合自己的预期。

整理过后,就可以得到完整的打印100-200中的质数(素数)的代码,见下:

最后,也是每个项目都要的推广环节,在此之前,我们要先来对这个代码进行优化一下,

在这一行中,i 从2一直加到 num -1,数字小还好,如果使庞大的数字的话,整个工程运行起来的速度会变慢不少,所以,我们可以把代码优化成这样:

因为在根号下 num 之前都没能找到有一个数能被 num 整除的话,那么,在根号下 num 之后,也一定不会存在有一个数能够被 num 整除。

推广:可以让其在打印质数(素数)时,不受范围限制(如上面代码,只能打印100-200之间的),而是能够按照自己的意愿来打印这些质数(素数)。

最后的代码为:

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔡欣致

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值