如何将整数转换为罗马数字

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

在此问题中,给定一个整数,我们的任务是将其转换为罗马数字系统中的字符串表示。让我们看一些示例来理解这个问题。

输入 10

输出: X

输入 4

输出: IV

输入 60

输出: LX

输入 1903

输出: MCMIII

以下是标准罗马数字及其转换为整数系统的列表。

符号
I1
IV4
V5
X10
L50
C100
D500
M1000

方法 - 1

我们将通过提取数字的位数来将整数转换为罗马数字。我们将数字转换为个位、十位、百位和千位,因为这些位数都有标准的罗马符号。然后,我们将进一步检查数字是否遵循加法或减法规则。例如,数字 3、8、13 等遵循加法规则,而数字 4、9 和 14 遵循减法规则。

让我们通过一个例子来理解这个方法的算法。

要从整数中提取位数,我们将给定的整数与标准的罗马符号值进行比较。首先,我们将其与 1000、然后是 900、然后是 500、然后是 400、100、90、50、40、10、9、5、4、1 进行比较。在这些数字中,我们包含了 900、400、90、40、9 和 4 等整数,因为它们是遵循减法规则的标准数字。分别检查这些整数值的位数也会更容易。让我们通过一个例子来理解算法。

让我们以整数 1903 为例。

整数 = 1903

罗马 = ""

  • 首先,我们将整数与基数 1000 进行比较。由于 1903 > 1000,我们将按如下方式进行:
    • 将数字除以基数,即 1903 / 1000。
    • 存储余数和商。余数 = 903,商 = 1
    • 罗马符号将是基数乘以商的表示,即 M。
    • 因此,罗马 = "M"。
    • 整数 = 余数 = 903。
  • 在下一次迭代中,我们将再次将整数与基数进行比较。这次,小于且最接近整数的基数是 900,因为 903 > 900。
    • 将数字除以基数,即 903 / 900。
    • 存储余数和商。余数 = 3,商 = 1
    • 罗马符号将是基数乘以商的表示,即 CM。
    • 因此,罗马 = "MCM"。
    • 整数 = 余数 = 3。
  • 在此迭代中,我们将再次进行比较,这次,合适的基数是 1,因为 3 > 1。
    • 将数字除以基数,即 3 / 1。
    • 存储余数和商。余数 = 0,商 = 3
    • 罗马符号将是基数乘以商的表示,即 I * 3 = III。
    • 因此,罗马 = "MCMIII"。
    • 整数 = 余数 = 0。
  • 由于整数为 0,我们已成功将其转换为罗马表示。

因此,整数 1903 的罗马表示为 MCMIII。

下面是 Python 中上述方法的实现。

代码

输出

The roman representation of 1903 is: MCMIII

方法 - 2

在此方法中,我们将提取给定数字的主要有效数字。主要有效数字是位于数字最高位数的数字。例如,在数字 350 中,主要有效数字是 3,在数字 45 中,主要有效数字是 4。我们将维护一个迭代器来根据当前数字更新除数,以便当我们用除数除以数字时,我们得到主要有效数字。这次,我们添加了两个代表数字 5000 和 10000 的罗马符号。这些数字分别由 G 和 H 表示。

这是 Python 中上述方法的实现。

代码

输出

The Roman value for the integer is: MCMIII

方法 - 3

在此方法中,我们将使用内置函数将整数转换为罗马数字。这个内置函数可以在一个名为 Roman 的模块中找到。我们首先需要安装这个模块,然后就可以使用 toRoman() 函数将整数转换为其罗马表示。

要安装该包,我们将使用 pip 命令。命令是

我们只需要将整数值传递给函数,它就会返回传递给函数的整数的罗马等价物。

代码

输出

The Roman value for the integer is: MCMIII