shell中用for循环打印 n 以内的素数
来源:网络收集 点击: 时间:2024-04-10我们先看一下我们的脚本效果,就是 执行脚本 提示你输入 n,以此求出 n 以内的素数;(脚本后面加参数是不会读取内容作为 n 的),效果如图;

开始写脚本,就要先知道要求完成条件;素数的定义和判断如下图;这里我们关键要知道素数的 判断 ,只有 本身 和 1,这两个因数;

我们这里先熟悉 一下 read 的用法,获取 键值 ,因此来获得 n 值,限定范围;脚本如图一;测试如图二,可以正常获取 n 值;


把 echo $n 这个测试代码,删除;然后写入完整的代码,就是如下图;

简单讲解一下,先用 一层 for 循环,定义变量 i,(i默认等于2,素数是从2 开始的),然后在循环通过 $i 来代表 n 以内的 所有数字;

然后就是关键的判断,我们要知道 $i%$j=0(要理解 模 的定义),就可以说明 $j 就是 $i的因数;通过 二层for循环,让 $i 可以和 $i 以内的所以数依次求 模;然后 判断 n1(下图中代表 模值的变量,不要和 n弄混了)是否等于 0 ,为 0 就把此时的 $j 赋予给 t变量,并跳出循环(这点同样重要)

然后就是 和二层 for 循环同级 的 if 判断 , 我们上面 获取的 $t 如果和 $i 相等,就是 说明 $i 和 $j相同,符合 只有本身是因数 这个条件(1是不用比的),那么 $i 就是素数了;
另外,比如像 4 ,在二层for循环中 会和 2 模出 0,此时 t=$j=2,把 t=2和 4比较高 ,不相等,也就说明了 4 有其他因数,不是素数;

个人学习经验,仅作分享;
表达能力有限,希望大家可以多练,理解算法,和脚本;
SHELL脚本素数打印FOR版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_485148.html