Sierpinski Number in Java

2025年5月9日 | 阅读 3 分钟

在本节中,我们将学习什么是谢尔宾斯基数,还将创建 Java 程序来检查给定数字是否为谢尔宾斯基数谢尔宾斯基数程序经常在 Java 编码面试和学术中出现。在继续本节之前,首先我们将理解谢尔宾斯基三角形,因为谢尔宾斯基数谢尔宾斯基三角形密切相关。

谢尔宾斯基三角形

谢尔宾斯基三角形垫形三角形是一种具有自相似性的几何对象。这意味着如果我们放大该对象,它将保持相同的外观或结构。谢尔宾斯基三角形就是这样一个分形(曲线或几何图形,其每个部分都与整体具有相同的统计特征),它是通过绘制一个三角形并移除通过连接外三角形边的中点绘制的内部三角形而形成的。这个过程被递归地无限重复。

换句话说,我们也可以将其定义为“一个具有等边三角形整体形状的分形和吸引子固定集合。它递归地将一个三角形细分为更小的三角形。”下图显示了四次迭代的谢尔宾斯基三角形。

计算谢尔宾斯基三角形的公式是n=3k-1

Sierpinski Number in Java

谢尔宾斯基数

谢尔宾斯基数是一个正奇整数 k,对于该整数,对于所有自然数 n,整数k*2n+1 都是复合数。

换句话说,如果以下集合的所有成员都是复合数,则 k 为谢尔宾斯基数

k.2n+1:n∈N

它是 OEIS 序列A076336。序列的第一个数字,即78557,是最小的谢尔宾斯基数,但这是一个猜想(尚未证明)。它之所以是谢尔宾斯基数,是因为它具有覆盖集,即{3, 5, 7, 13, 19, 37, 73}。因为它被称为覆盖集,所以形式为78557*2n+1 的每个数都可以被这些小数之一整除。

下表显示了前几个谢尔宾斯基数的覆盖集。

n覆盖集
78557{3, 5, 7, 13, 19, 37, 73}
271129{3, 5, 7, 13, 17, 241}
271577{3, 5, 7, 13, 17, 241}
322523{3, 5, 7, 13, 37, 73, 109}
327739{3, 5, 7, 13, 17, 97, 257}
482719{3, 5, 7, 13, 17, 241}
575041{3, 5, 7, 13, 17, 241}
603713{3, 5, 7, 13, 17, 241}
903983{3, 5, 7, 13, 17, 241}
934909{3, 5, 7, 13, 19, 73, 109}
965431{3, 5, 7, 13, 17, 241}
1259779{3, 5, 7, 13, 19, 73, 109}
1290677{3, 5, 7, 13, 19, 37, 109}
1518781{3, 5, 7, 13, 17, 241}
1624097{3, 5, 7, 13, 17, 241}
1639459{3, 5, 7, 13, 17, 241}
1777613{3, 5, 7, 13, 17, 19, 109, 433}
2131043{3, 5, 7, 13, 17, 241}

谢尔宾斯基数示例

前几个谢尔宾斯基数是

78557, 271129, 271577, 322523, 327739, 482719, 575041, 603713, 903983, 934909, 965431, 1259779, 1290677, 1518781, 1624097, 1639459, 1777613, 2131043, 2131099, 2191531, 2510177, 2541601, 2576089, 2931767, 2931991, 3083723, 3098059, 3555593, 3608251.

谢尔宾斯基三角形 Java 程序

SierpinskiTriangleExample.java

输出

Sierpinski Number in Java