Roman Numeral Arithmetic
Realize adição, subtração, multiplicação e divisão com algarismos romanos.
= 14
= 9
RomanNumeralArithmetic.reference
I
1
V
5
X
10
L
50
C
100
D
500
M
1000
RomanNumeralArithmetic.rules
- RomanNumeralArithmetic.rule1
- RomanNumeralArithmetic.rule2
- RomanNumeralArithmetic.rule3
Sobre esta ferramenta
Os números romanos são um antigo sistema de numeração ainda usado em contextos formais, desde mostradores de relógios até datas de lançamento de filmes. Embora ler números romanos seja direto, realizar operações aritméticas com eles é complicado porque a notação carece de zero e não se alinha com a lógica posicional. Esta ferramenta elimina essa dificuldade ao permitir que você adicione, subtraia, multiplique e divida números romanos instantaneamente, convertendo entre números romanos e arábicos de forma contínua.
Para usar a ferramenta, selecione a operação no menu suspenso, digite dois números romanos ou misture entradas romanas e arábicas, e clique em Calcular. A ferramenta executa a operação aritmética instantaneamente e exibe o resultado nos dois formatos, romano e arábico, facilitando a verificação do seu trabalho ou o entendimento de como a aritmética romana se relaciona com a notação moderna. É perfeito para alunos de história, entusiastas de palavras cruzadas ou qualquer pessoa curiosa sobre como os romanos realizavam cálculos antes da invenção da álgebra.
Perguntas Frequentes
Implementação de Código
ROMAN_VALUES = [
(1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),(100,'C'),(90,'XC'),
(50,'L'),(40,'XL'),(10,'X'),(9,'IX'),(5,'V'),(4,'IV'),(1,'I')
]
def to_int(roman: str) -> int:
"""Convert Roman numeral string to integer."""
values = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
result, prev = 0, 0
for ch in reversed(roman.upper()):
val = values[ch]
if val < prev:
result -= val
else:
result += val
prev = val
return result
def to_roman(n: int) -> str:
"""Convert integer (1-3999) to Roman numeral string."""
if not 1 <= n <= 3999:
raise ValueError("Number must be between 1 and 3999")
result = ""
for value, numeral in ROMAN_VALUES:
while n >= value:
result += numeral
n -= value
return result
# Arithmetic operations
def roman_add(a: str, b: str) -> str:
return to_roman(to_int(a) + to_int(b))
def roman_sub(a: str, b: str) -> str:
return to_roman(to_int(a) - to_int(b))
def roman_mul(a: str, b: str) -> str:
return to_roman(to_int(a) * to_int(b))
def roman_div(a: str, b: str) -> str:
r = to_int(a) // to_int(b)
return to_roman(r)
# Examples
print(f"XIV + IX = {roman_add('XIV', 'IX')}") # 14+9=23 = XXIII
print(f"L - XIII = {roman_sub('L', 'XIII')}") # 50-13=37 = XXXVII
print(f"V × IV = {roman_mul('V', 'IV')}") # 5×4=20 = XX
print(f"XX ÷ IV = {roman_div('XX', 'IV')}") # 20÷4=5 = V
# Convert between formats
for n in [1, 4, 9, 14, 40, 90, 399, 1994, 2024]:
print(f"{n} = {to_roman(n)}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.