Roman Numeral Arithmetic
Esegui addizione, sottrazione, moltiplicazione e divisione con numeri romani.
= 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
Informazioni sullo strumento
I numeri romani sono un antico sistema di numerazione ancora utilizzato in contesti formali, dalle sfere degli orologi alle date di uscita dei film. Sebbene la lettura dei numeri romani sia semplice, l'esecuzione diretta di operazioni aritmetiche con essi è ingombrante perché la notazione manca di zero e non si allinea con la logica posizionale. Questo strumento elimina quella difficoltà permettendoti di aggiungere, sottrarre, moltiplicare e dividere i numeri romani istantaneamente, convertendo tra numeri romani e arabi senza problemi.
Per utilizzare lo strumento, seleziona l'operazione dal menu a discesa, inserisci due numeri romani o mescola input romani e arabi, quindi fai clic su Calcola. Lo strumento esegue istantaneamente l'operazione aritmetica e visualizza il risultato in entrambi i formati, romano e arabo, rendendo facile verificare il tuo lavoro o comprendere come l'aritmetica romana si relaziona alla notazione moderna. È perfetto per gli studenti che studiano storia, gli appassionati di parole crociate o chiunque sia curioso di sapere come i Romani eseguivano i calcoli prima dell'invenzione dell'algebra.
Domande Frequenti
Implementazione del Codice
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.