c语言输出1到100的素数


1. 主题

梅森数,又被称为麦森数,是指形如 2p - 1 的正整数,其中指数 p 必须是素数。这种数通常被记作 Mp。若此数为素数,则称为梅森素数。

以 22 - 1 = 3 和 23 - 1 = 7 为例,这两个数都是梅森素数。对于 211 - 1 = 2047,尽管可以分解为 23×89,说明 2047 并非素数,因此它只是梅森数而非梅森素数。

现在,我们要编写一个程序,用于找出指数在 10 以内的所有梅森素数。

2. 设计分析

我们将采用穷举法。从素数中挑选出指数,然后以 2 为底,当前选定的素数为指数,计算其幂再减 1,最后判断得到的结果是否为素数。若是素数,则为梅森素数;若不是,则不是。

3. 功能或功能块创建

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

4. 接口变量定义

我们预先定义了一个可容纳 10 个元素的二维数组来保存结果。为了提高代码的可读性和复用性,大部分变量被定义为静态变量。

程序代码(此处仅展示核心逻辑部分):

对于每一个在 10 以内的素数 p,计算 2p - 1 的值。然后使用先前编写的素数判断子程序来检查该值是否为素数。若是,则将此值及其对应的 p 值保存至之前定义的二维数组中。

例如:

当 p = 2 时, 22 - 1 = 3 (素数), 当 p = 3 时, 23 - 1 = 7 (素数), ...等等。

5. 代码测试

经过测试,我们找到了指数在 10 以内时的梅森素数:M2=3, M3=7, M5=31, M7=127, 一共四个。

6. 总结

通过此项目,我们学习了:

  • FOR循环语句的使用;
  • IF...ELSE语句的用法;
  • 子程序的调用与参数传递;
  • 二维数组的使用技巧;
  • CONTINUE语句的作用。

(来源: PLC论坛 - 专业可编程控制器技术交流平台)