SCL编程实例100例-023-梅森素数

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

摘要:梅森数也叫麦森数,说的是那种形如 2p - 1 的正整数,这里面指数 p 得是素数,梅森数通常被记为 Mp 。要是这个数是素数,那就叫梅森素数。就像 2² - 1 = 3、2³ - 1 = 7 这俩都是梅森素数,可 2¹¹ - 1 = 2047 = 23×89

1 | 题目

梅森数也叫麦森数,说的是那种形如 2p - 1 的正整数,这里面指数 p 得是素数,梅森数通常被记为 Mp 。要是这个数是素数,那就叫梅森素数。就像 2² - 1 = 3、2³ - 1 = 7 这俩都是梅森素数,可 2¹¹ - 1 = 2047 = 23×89 ,所以 2047 是个合数,很明显不是梅森素数,只能把它叫做梅森数。编个程序把指数在 10 以内的所有梅森素数都找出来。

2 | 设计分析

咱们用穷举法,把 10 以内的素数找出来当作指数,接着计算以 2 为底、当前这个素数作指数的幂,然后再减 1 ,看看得到的结果是不是素数。要是结果是素数,那就叫梅森素数,要是不是,那就不是啦。

3 | 创建功能或功能块

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


4 | 定义接口变量

具体的接口变量定义您看下面这张图就知道啦:

预定义含有10个元素的二维数组来保存结果,为了方便监控数值,大部分变量被定义成Static变量。

5 | 程序代码

编写程序代码。如下图:

本例的关键是进行素数判断,程序中两次调用前篇编写的素数判断的子程序。

6 | 代码测试

在循环OB中调用FB- “MersennePrimes”,调用时会自动创建背景数据块,命名为“InstMersennePrimes”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:

得到指数在10以内的梅森素数M2=3、M3=7、M5=31、M7=127,共4个。

7 | 总结

学习使用FOR循环语句;

学习使用IF..ELSE语句;

学习子程序的调用和参数传递;

学习二维数组的使用;

学习CONTINUE语句的作用。

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

来源:PLC技术玩

相关推荐