是不是有很多新手朋友,看到 “素数” 和 “for 循环” 放一起就发懵?想写个判断素数的 C 语言程序,手里握着 for 循环却不知道怎么用,要么循环写不明白,要么结果总是错。其实啊,用 for 循环写素数程序没那么复杂,今天兔子哥就手把手教你,从基础到稍复杂的情况都给你讲清楚,保证你看完就会,一起往下看吧!
一、素数和 for 循环,到底啥关系?
首先得弄明白,素数是啥?素数就是大于 1 的整数里,除了 1 和它自己,再没有别的数能整除它。像 2、3、5 这些都是素数。
那为啥要用 for 循环呢?因为判断一个数是不是素数,得拿它去试除比它小的数,这重复试除的过程,用 for 循环来实现最合适不过了。for 循环能帮咱们自动从一个数跑到另一个数,不用手动写一次次的判断,多方便。
可能有人会问,不用 for 循环行不行?也不是不行,用 while 循环也能写,但 for 循环在这种有明确循环范围的场景里,代码更简洁,新手也更容易看懂。
二、最基础的写法:用 for 循环判断单个素数
咱们先从简单的来,写一个程序,让用户输入一个数,用 for 循环判断它是不是素数。
步骤分解:
- 先处理特殊情况:小于等于 1 的数肯定不是素数。
- 用 for 循环让 i 从 2 开始,一直跑到这个数的平方根(后面会说为啥)。
- 每次循环都用这个数除以 i,如果能整除,就不是素数;反之,就是素数。
代码是这样的:
c运行
#include int main() {int num, i, is_prime = 1;printf("请输入一个整数:");scanf("%d", &num);if (num <= 1) {is_prime = 0;} else {// for循环从2跑到num的平方根for (i = 2; i * i <= num; i++) {if (num % i == 0) {is_prime = 0;break; // 找到能整除的,直接跳出循环}}}if (is_prime == 1) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}代码解释:
这里的 for 循环
i = 2; i * i <= num; i++,意思是 i 从 2 开始,每次加 1,只要 i 的平方还没超过 num,就一直循环。这样比循环到 num-1 要快得多,新手刚开始可能不理解,多试几个数就明白了。三、再进一步:用 for 循环输出一定范围内的素数
有些时候,咱们想输出 1 到 100 之间的所有素数,这时候就需要两个 for 循环嵌套了,外面一个循环控制范围,里面一个循环判断是不是素数。
代码参考:
c运行
#include int main() {int i, j, is_prime;int max = 100; // 输出1到100的素数for (i = 2; i <= max; i++) { // 外层循环:遍历每个数is_prime = 1;// 内层循环:判断i是不是素数for (j = 2; j * j <= i; j++) {if (i % j == 0) {is_prime = 0;break;}}if (is_prime == 1) {printf("%d ", i);}}return 0;}运行效果:
程序会输出 1 到 100 之间所有的素数,像 2 3 5 7 11... 这样一行显示出来。
这里要注意,外层循环从 2 开始,因为 1 不是素数,没必要判断。新手写嵌套循环的时候,容易把内外层的变量弄混,一定要注意 i 和 j 别写错了。
四、for 循环用不对,会出啥问题?
要是 for 循环的条件写得不对,程序要么结果错,要么运行慢。常见的错误有这几种:
- 循环范围太大:把
i * i <= num写成i < num,比如判断 10000 这个数,本来循环到 100 就够了,结果跑到 9999,程序会特别慢。 - 循环起始值错了:从 1 开始循环,那所有数都会被 1 整除,结果全成了非素数,这就错了。
- 忘了加 break:找到能整除的数后,没加 break 跳出循环,会继续无效的循环,浪费时间。
那怎么避免这些错呢?写循环的时候,先想清楚起始值该从几开始,结束条件是什么,想不明白就拿个小一点的数,比如 7,在纸上走一遍循环流程。
五、兔子哥的小建议
用 for 循环写素数程序,关键就在循环的范围和条件上。新手刚开始不用追求多复杂的优化,先把基础的逻辑写对,保证结果正确最重要。
多动手改改代码试试,比如把循环条件改一下,看看结果有啥变化;或者换个范围,输出 1 到 200 的素数,慢慢就有感觉了。我刚开始学的时候,也是经常把循环条件写错,多练几次就熟了。
其实啊,for 循环就像个不知疲倦的小助手,你只要告诉它从哪开始、到哪结束、每次怎么走,它就会乖乖帮你做事。用熟了之后,你会发现写素数程序其实挺简单的。希望今天讲的这些能帮到你,赶紧打开编译器试试吧!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~