Roman Numerals

2 methods of converting a number to Roman numerals

by subskybox

JavaScript

function rome(N,s,b,a,o,t){
  t=N/1e3|0;N%=1e3;
  for(s=b='',a=5;N;b++,a^=7)
    for(o=N%a,N=N/a^0;o--;)
      s='IVXLCDM'.charAt(o>2?b+N-(N&=~1)+(o=1):b)+s;
  return Array(t+1).join('M')+s;
}

function romanize(num) {
  var lookup = {M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},
      roman = '',
      i;
  for ( i in lookup ) {
    while ( num >= lookup[i] ) {
      roman += i;
      num -= lookup[i];
    }
  }
  return roman;
}

var year = 2012;
document.write(rome(year));
document.write("<br/>");
document.write(romanize(year));