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))