JSFiddle - React, Tailwind, and code Playground
by wZVanG
JavaScript
function roman(n){
var S = "IVXLCDM", R = $('<span/>'),
r = [[S[0], 1]], i = j = k = o = 1
while(o < 84 && (d = k % 6 || 6)
&& (i *= k & 1 ? 5 : 2)){
r[o++] = [S[d - ((d - 1) % 2 + 1)]
+ S[d], i - j]
j *= k++ -1 & 1 ? 10 : 1
r[o++] = [S[d], i]
}
while(i = r[o---1])
while(i[1] <= n && R.append($('<big/>', {style:'border-top:' + (~~( o/12.5 ) * 4) +'px solid;display:inline-block;margin:0 1px;'}).text(i[0])))
n -= i[1]
return R
}
// Ejemplo
var n; while(n = prompt('Número a convertir en romano: ',n||7500800954))
void(($(document.documentElement).prepend($('<div/>').html(n<999000000000000000000?$('<span/>').html('<b>'+n+':</b><br/>').after(roman(parseInt(n))):'Número inválido')))&&scrollTo(0,0))