| 
		
			Сообщение от j0hnik
			
		
	 | 
	| 
		в образовательных учреждениях мотивировать умеют (писать какую нибудь ерунду, которая итак уже есть)
	 | 
	
Когда задают задания, которые не имеют практической ценности в зависимости, к примеру, от платформы или сферы применения языка, это да. А знание/понимание этого алгоритма, это не ерунда, без знания этого не было бы toString(). Кроме традиционного деления на 2 (кстати если говорить об алгоритме, то для полного представления картины и деления по модулю не должно быть, должна быть проверка), есть еще и метод сравнения уменьшающихся степеней:
var n, m = [], b = '';
if(n = prompt('Number')) {
    if(n > 1) {
        for(var i = k = 0; k < n; i++) {
            k = Math.pow(2, i);
            m.push(k);
        }
        m.pop();
        while(i = m.pop())  b += n >= i ? (n -= i, 1) : 0;
    } else b = n;
    
    alert(b) 
}
В основе то всего, включая и toString(), обычная бинарная логика. А двоичное представление имеет еще и множество форматов, к примеру двоично-десятичный, который используется сплошь и рядом, к примеру в часах. Ну-ка попробуйте перевести десятичное в двоично-десятичное представление используя toString(). 
