SCL编程实例100例-024-金蝉素数

360影视 2025-01-12 21:46 3

摘要:3、5、7、9 这 5 个奇数能排列组成 5 位的素数。要是把这个素数的最高位和最低位去掉,剩下的三位数还是素数。接着呢,再把高二位和低二位同时去掉,剩下的一位数也还是素数。这个过程就跟金蝉脱壳似的,所以大家就把这种神秘的素数叫做金蝉素数。现在要编写程序来求出

1 | 题目

1、3、5、7、9 这 5 个奇数能排列组成 5 位的素数。要是把这个素数的最高位和最低位去掉,剩下的三位数还是素数。接着呢,再把高二位和低二位同时去掉,剩下的一位数也还是素数。这个过程就跟金蝉脱壳似的,所以大家就把这种神秘的素数叫做金蝉素数。现在要编写程序来求出这些金蝉素数。

2 | 设计分析

假设存在一个 5 位数 n 哈,首先呢,n 得是素数。然后呀,把 n 去掉首尾之后得到的三位数 m 也得是素数,而且 m 中间位那个数得是素数,这就意味着中间那个数不能是 1 或者 9 哟。同样的,n 的每一位数值都不一样,并且都不能是偶数。所以呢,判断是不是金蝉素数的步骤是这样的:1)先看看 n 是不是素数;

2)再瞧瞧 m 是不是素数;

3)接着判断 m 中间那一位数是不是 1 或者 9;

4)最后瞅瞅 n 的每一位是不是都不是偶数。只要这里面有任意一个条件不符合金蝉素数的要求,那就不是金蝉素数啦。

3 | 创建功能或功能块

创建功能块FB,命名为“GoldenCicadaPrimes”。

4 | 定义接口变量

具体接口变量定义见下图:

预先定义一个包含 10 个元素的一维数组,用来保存结果。为了能更方便地监控数值,大多数变量都被定义成了 Static 变量。另外呢,还定义了一个包含 5 个元素的一维数组,用来临时保存 5 位的奇数。

5 | 程序代码

编写程序代码。如下图:

这个例子的关键在于进行素数的判断,还有数位的截取以及组合。

6 | 代码测试

在循环 OB 里调用 FB——“GoldenCicadaPrimes”,调用的时候会自动创建一个背景数据块,给它起个名字叫“InstGoldenCicadaPrimes”。这个背景数据块能够用来监视和修改数据。转到在线然后监控程序。就像下面这张图这样:

最后得到了 13597、53791、79531、91573、95713 这 5 个金蝉素数。这里面 13597 和 79531 是互逆的金蝉素数。

7 | 总结

要学习怎么使用 FOR 循环语句;

要学习 IF……ELSE 语句怎么用;

学习一维数组的使用方法;

还要学习 EXIT 语句能起到啥作用。

SCL编程实例100例-024-金蝉素数 PLC论坛-全力打造可编程控制器专业技术论坛 -

来源:PLC技术玩

相关推荐