初识C语言|素数代码之——你的代码,我的代码,好像不一样

        嘿,大家好!咱作为大一新生,来聊聊 C 语言输出素数这事儿。其实,说白了,这就像玩游戏找宝藏一样,路数有好多呢。咱可以老老实实用简单办法,一个个试。不过这有点傻,像个愣头青。还有个神奇的筛法,就像用个大网把合数都捞走,剩下的就是宝贝素数啦。感觉 C 语言像个大迷宫,找素数的方法就是各种神奇的路线,咱们可得好好研究,可不能在这迷宫里“迷路”哈!

      现在,就让咱们以“输出100到200之间的素数”为例,简单分享一下,我个人的学习经历。

      首先,咱们来看一个最基本代码,相信大家都可以看懂哈。

       

      咱讲专业一点,该过程就是:外层循环遍历 100 到 200 之间的每个数。而对于每个数,内层循环用于检查它是否能被 2 到该数减 1 之间的数整除。如果能整除,就通过 break  跳出内层循环。如果内层循环正常结束(即没有提前跳出),说明该数不能被 2 到它自身减 1 之间的任何数整除,那么它就是一个素数,将其输出。

      以上的代码较为清晰。但是,相信很多同学,看懂会写出另一个代码,请继续向下揭秘。                                                

          左边代码与上面不同的是,左边每次进入外层循环,都先把 flag  初始化为 1  ,这意味着假设当前的 i 是素数 。

与此同时,咱们还可以对第二个代码,进行进一步的优化,如下:

       第 5 行: for (i = 101; i < 201; i += 2)  这是一个循环,从 101 开始,每次增加 2,直到小于 201。这样做是为了只检查奇数,因为偶数(除了 2)一定不是素数。
         第 7 行: for (j = 2; j < sqrt(i); j++)  这是一个内层循环,从 2 到  i  的平方根,用于检查  i  是否能被整除。

     怎么样,同样一个代码,竟然可以有那么多种解法,并且还可以进一步优化。C语言是不是很神奇呢?

    让咱们带着这份热情,继续探索编程语言的魅力吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值