Frugal Number in Java

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

在本节中,我们将学习什么是节俭数,并创建Java 程序来检查给定的数是否是节俭数节俭数程序经常在 Java 编码面试和学术中被问到。

节俭数

节俭数是基数为 b 的自然数 n,其数字的数量大于其素因数分解(包括指数大于 1)的数字的数量。它是 OEIS 序列A046759

注意事项

  • 节俭数和等效数字数的并集得到经济型结果
  • 一些学者称节俭数为经济型
  • 大于1923的数可以写成节俭数的和。

我们可以说节俭数与经济型数相同。因此,我们可以将节俭数表示为将 n 写成素数幂的乘积。

其中

d(n):表示乘积中的数字数量。

l(n):表示 n 中的数字数量。

因此,序列给出 n,使得d(n)<l(n)。

让我们通过示例来理解。

节俭数示例

125 = 53,l(n) = 3,d(n) = 2。此处,d(n)<l(n),因此 125 是节俭数。

128 = 27,l(n) = 3,d(n) = 2。此处,d(n)<l(n),因此 128 是节俭数。

243 = 35,l(n) = 3,d(n) = 2。此处,d(n)<l(n),因此 243 是节俭数。

256 = 28,l(n) = 3,d(n) = 2。此处,d(n)<l(n),因此 256 是节俭数。

2048 = 211,l(n) = 4,d(n) = 3。此处,d(n)<l(n),因此 2048 是节俭数。

我们观察到,用 k 位数字表示的数,其形式为 pq 的因数分解使用的数字大于 k。

类似地,我们也可以检查其他数字。

其他十进制节俭数包括 343、512、625、729、1024、1029、1215、1250、1280、1331、1369、1458、1536、1681、1701、1715、1792、1849、1875、2048、2187、2197、2209、2401、2560、2809、3125、3481、3584、3645、3721、4096、4374、4375、4489、4802、4913。

第一个不是素数幂的节俭数是1029 = 3 × 7³

节俭数 Java 程序

FrugalNumberExample.java

输出 1

Enter the number to check: 125
It is a frugal number.

输出 2

Enter the number to check: 2084
It is not a frugal number.