Sphenic Number in Java

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

在本节中,我们将学习什么是斯芬尼克数,并创建 Java 程序来检查给定数字是否为斯芬尼克数斯芬尼克数程序经常出现在 Java 编码测试和学术界。

斯芬尼克数

如果给定数字 (n) 的因子乘积恰好是三个,并且所有因子都是素数,则正整数 n 称为斯芬尼克数。换句话说,如果 n 是一个斯芬尼克整数,则 n=p x q x r(p、q 和 r 是三个不同的素数,它们的乘积是 n)。它是 OEIS 中的一个序列 A007304。让我们通过一个例子来理解它。

如果三个不同的素数相乘得到数字本身,那么这个数字就是斯芬尼克数。斯芬尼克数恰好有 8 个约数。

Sphenic Number in Java

这八个约数如下:

  1. 1
  2. 三个不同的素数
  3. 三个半素数(其中斯芬尼克数的每个不同素因子都被省略)
  4. 斯芬尼克数本身

让我们考虑数字 42,并检查它是否是斯芬尼克数。

42 的因子是 1、2、3、7、21。让我们找出 8 个约数。

  • 21 等于 3 乘以 7,2 被省略。
  • 14 等于 2 乘以 7,3 被省略。
  • 6 等于 2 乘以 3,7 被省略。
  • 42 本身。

因此,42 是一个斯芬尼克数,因为它恰好有三个素因子 2、3 和 7,并且这些因子的乘积就是数字本身。

注意:一个素数的立方与另一个素数的乘积以及一个素数的七次幂也有 8 个约数。

斯芬尼克数示例

让我们取数字 30 并检查它是否是斯芬尼克数。

形成相同数字的最小三个素因子是 2、35。将它们相乘,我们得到相同的数字 30。因此,给定数字是一个斯芬尼克数

让我们取另一个数字,110

110=1,2,5,10,11,22,55 和 110

形成相同数字的最小三个素因子是 2、511。将它们相乘,我们得到相同的数字 110。因此,给定数字是一个斯芬尼克数

让我们取另一个数字,23

23=1,23

给定数字 23 不是一个斯芬尼克数。因为只有两个素因子。

同样,我们也可以检查其他数字。其他一些斯芬尼克数是 78、102、105、110、285、286、290、310、318、322、345 等。我们可以找到 OEIS 提供的 所有斯芬尼克数直到 10000 的完整列表。

斯芬尼克数 Java 程序

上面我们讨论过,斯芬尼克数恰好有 8 个约数。所以,首先,我们将尝试找出这个数是否恰好有 8 个约数。之后,我们将检查前三位数字(除了 1)是否是素数。

SphenicNumberExample1.java

输出 1

Enter a number to check: 165
Yes, the given number is sphenic.

输出 2

Enter a number to check: 18967
No, the given number is not a sphenic.

让我们找出给定范围内的所有斯芬尼克数。

SphenicNumberExample2.java

输出

Sphenic Number in Java

让我们创建另一个 Java 程序,使用不同的逻辑来查找所有斯芬尼克数。

SphenicNumberExample3.java

输出

Sphenic Number in Java