Roman Numeral Arithmetic
로마 숫자로 덧셈, 뺄셈, 곱셈, 나눗셈을 수행합니다.
= 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
이 도구 소개
로마 숫자는 고대 기수법으로, 시계 문자판이나 영화 개봉일 등 여전히 공식적인 상황에서 사용됩니다. 로마 숫자를 읽는 것은 간단하지만, 0이 없고 자릿수 기반 논리와 맞지 않아서 직접 산술 연산을 수행하는 것은 번거롭습니다. 이 도구는 로마 숫자의 덧셈, 뺄셈, 곱셈, 나눗셈을 즉시 계산하고 로마 숫자와 아라비아 숫자를 원활하게 변환함으로써 이러한 어려움을 해결합니다.
도구를 사용하려면 드롭다운 메뉴에서 연산을 선택하고, 두 개의 로마 숫자를 입력하거나 로마 숫자와 아라비아 숫자를 섞어서 입력한 후 계산 버튼을 클릭합니다. 도구는 즉시 산술 연산을 수행하고 결과를 로마 숫자와 아라비아 숫자 형식 모두로 표시하므로 계산을 검증하거나 로마 산술이 현대 기수법과 어떻게 관련되는지 이해하기 쉬워집니다. 역사를 배우는 학생, 크로스워드 애호가, 또는 고대 로마인들이 대수학이 발명되기 전에 어떻게 계산했는지 궁금한 사람들에게 완벽합니다.
자주 묻는 질문
코드 구현
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.