嘿,大家好!咱作为大一新生,来聊聊 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语言是不是很神奇呢?
让咱们带着这份热情,继续探索编程语言的魅力吧!
标签:代码,C语言,素数,初识,整除,内层,咱们,循环 From: https://blog.csdn.net/oi0825/article/details/143726466