Ramanujan Number or Taxicab Number in Java

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

在本节中,我们将学习什么是拉马努金数(或哈代-拉马努金数),以及如何通过 Java 程序检查一个数是否为拉马努金数

拉马努金数

在数学中,拉马努金数是一个神奇的数字。它可以定义为可以表示为 n 个不同正整数立方和的最小数字。它也被称为出租车数。它用 Ta 表示。最著名的出租车数是 1729

数字 1729 与出租车有关。有一次,拉马努金住院了,而G.H.哈代(英国数学家)乘坐出租车前来探望。他乘坐的出租车的号码是 1729。他评论说,我出租车的号码似乎是个乏味的数字。

听到哈代的 remarks 后,拉马努金回答说:“不,哈代!这是一个非常有趣的数字。”哈代问:“怎么了?”拉马努金回答说:“数字 1729 是最小的可以表示为两个立方和的数字,并且有两条不同的方式。”从那时起,它就被称为拉马努金数、哈代-拉马努金数或出租车数。让我们来验证一下拉马努金的说法。

1729= 103+93=1000+729
1729= 13+123=1+1728

其他拉马努金数的例子有

4104= 23+163=8+4096
4104= 93+153=729+3375
13832= 243+23=13824+8
13832= 183+203=5832+8000

出租车数也可能以三种不同的方式表示为两个立方和。例如,数字 15,170,835,645 等于

5173+24683=7093+24563=17333+21523

出租车数也可能以四种不同的方式表示为两个立方和。例如,数字 1,801,049,058,342,701,083 等于

922273+12165003=1366353+12161023=3419953+12076023==6002593+11658843

确定 Ta(N) 是困难的,因为数字会变得非常大

寻找拉马努金数的方法

有两种方法可以找到拉马努金数。让我们一个一个地通过例子来理解它们。

方法 1

一个神奇的数字,它等于数字的所有数字之和与数字的反转之和的乘积。让我们按照步骤找到拉马努金数。

步骤 1:从用户那里读取一个整数。

步骤 2:将各位数字相加。

步骤 3:求和的反转。

步骤 4:计算原始数字和反转数字的乘积。

如果乘积与输入的原始数字相同,则该数字是拉马努金数,否则不是。让我们通过一个例子来理解它。

示例

假设我们要检查数字 1458 是否为拉马努金数。

  1. 1458 = 1 + 4 + 5 + 8 =18
  2. 18 -> 81
  3. 18 * 81 = 1458

我们得到了与我们输入的数字相同的数字。因此,给定的数字是拉马努金出租车数。

让我们在 Java 程序中实现上述方法。

方法 2

在此方法中,给定的数字可以表示为 N 种不同的方式的两个立方和。例如

1729= 103+93= 13+123

Java 中的拉马努金数程序

RamanujanNumberExample1.java

输出 1

Enter a number you want to check: 1729
1729 is a Ramanujan Number.

输出 2

Enter a number you want to check: 1428
1428 is not a Ramanujan Number.

让我们创建另一个程序,该程序查找指定范围内的拉马努金数。

RamanujanNumberExample2.java

输出 1

Ramanujan Number between 1000 to 1000000:
1458
1729

输出 2

Ramanujan Number between 1 to 100000000:
1
81
1458
1729

下一个主题Java 中的 void 类