Вывод числа, содержащий цифру 2
Ребята, подскажите пожалуйста, как из цикла:
for (i=0; i<100; i++) вывести числа, содержащие цифру 2 и саму цифру 2 ? p.s. в названии темы опечатка "содержащее", нет возможности отредактировать. |
running,
:cray: <script> for (var i=0; i<100; i++) /2/.test(i) && document.write(i+' ') </script> |
Цитата:
|
рони, кстати при очень больших числах будет неправильно работать)
|
Решил сравнить скорость )
(function() { function test1() { for (var i=0; i<1000000; i++) { if (/2/.test(i)) { //console.log(i); } } } function test2() { function containsDigit(number, digit) { while (number > 0) { if (number % 10 == digit) return true; number = (number/10)|0; } return false; } for (var i=0; i<1000000; i++) { if (containsDigit(i, 2)) { //console.log(i); } } } var t1 = Date.now(); test1(); t1 = Date.now() - t1; var t2 = Date.now(); test2(); t2 = Date.now() - t2; alert("test1: " + t1 + ", test2: " + t2); })(); |
danik.js,
ок твой способ быстрее , мой короче - про большие числа тс не указал -- но я запомню -- спасибо за науку |
Добавил вариант с рекурсией. Чисто для образования, так как он намнооого дольше ;)
(function() { function test1() { for (var i=0; i<1000000; i++) { if (/2/.test(i)) { //console.log(i); } } } function test2() { function containsDigit(number, digit) { while (number > 0) { if (number % 10 == digit) return true; number = (number/10)|0; } return false; } for (var i=0; i<1000000; i++) { if (containsDigit(i, 2)) { //console.log(i); } } } function test3() { function containsDigit(number, digit) { if (number == 0) return false; if (number % 10 == digit) return true; containsDigit((number/10)|0, digit); } for (var i=0; i<1000000; i++) { if (containsDigit(i, 2)) { //console.log(i); } } } var t1 = Date.now(); test1(); t1 = Date.now() - t1; var t2 = Date.now(); test2(); t2 = Date.now() - t2; var t3 = Date.now(); test3(); t3 = Date.now() - t3; alert("test1: " + t1 + ", test2: " + t2 +", test3: " + t3); })(); P.S. У меня в файрфоксе вариант Рони быстрее - test1: 423, test2: 530, test3: 2131. |
Ты забыл return.
У меня Firefox 32: test1: 193, test2: 39, test3: 53 |
Часовой пояс GMT +3, время: 02:13. |