[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сколько раз число делится на число
cyberside
Необходимо узнать, например сколько раз 15 делиться на 2, ответ будет 5.



Спустя 5 минут, 9 секунд (19.09.2012 - 14:47) Игорь_Vasinsky написал(а):
Цитата
15 делиться на 2, ответ будет 5.

biggrin.gif biggrin.gif biggrin.gif
ну я бы понял 7 или 8, но как 5 ????

ceil()
floor()

Спустя 3 минуты, 4 секунды (19.09.2012 - 14:50) cyberside написал(а):
Игорь_Vasinsky, 15 - 8 - 4 - 2 - 1

Спустя 56 минут, 11 секунд (19.09.2012 - 15:46) Au196967 написал(а):
15-7.5-3,75-1,875-0,9375- дальше продолжать?))

Ну если серьезно то
ceil - для округления

Спустя 5 минут, 25 секунд (19.09.2012 - 15:52) cyberside написал(а):
Au196967, Необходимо узнать сколько раз 15 делиться на 2, а не округлить...

Спустя 8 минут, 31 секунда (19.09.2012 - 16:00) twin написал(а):
<?php

echo $start = 15;
$denominator = 2;

do
{
echo ' - ';
echo $start = round($start / $denominator);

}while($start > 1);

Спустя 33 минуты, 10 секунд (19.09.2012 - 16:33) sergeiss написал(а):
Наиболее правильное решение вот (вроде бы так :)):

$n=15;
$result=round( log( $n,2)+1, 0 );

Спустя 34 минуты, 53 секунды (19.09.2012 - 17:08) Hello написал(а):
Цитата (cyberside @ 19.09.2012 - 14:42)
Необходимо узнать, например сколько раз 15 делиться на 2, ответ будет 5.

Неправильный ответ, 15 на 2 можно делить бесконечно.

Спустя 38 минут, 28 секунд (19.09.2012 - 17:47) inpost написал(а):
cyberside
.21н37182783781237182371317831 можно делить сколько влезет куда угодно
Ты тестировал на калькуляторе за 5 грн. и он не выдержал?! smile.gif

Спустя 1 день, 3 часа, 28 минут, 59 секунд (20.09.2012 - 21:16) neadekvat написал(а):
Цитата (cyberside @ 19.09.2012 - 15:50)
15 - 8 - 4 - 2 - 1

С хрена ли?
15, 7, 3, 1
И тогда решение sergeiss будет выдавать верный результат.
Что-то я глючу. Должно быть 3, значит, просто log($n, 2)


sergeiss, интересно, кстати, не помню такого на матане.

Спустя 1 час, 23 минуты, 23 секунды (20.09.2012 - 22:39) sergeiss написал(а):
Цитата (neadekvat @ 20.09.2012 - 22:16)
С хрена ли?
15, 7, 3, 1

Автор добавляет в список само число. Поэтому и +1 внутри формулы.
Хотя, конечно, не до конца понятно, что же хочет ТС :)

Цитата (neadekvat @ 20.09.2012 - 22:16)
sergeiss, интересно, кстати, не помню такого на матане.

Я тоже не помню... Но мне как-то надо было найти "порядок величины", наиболее коротким способом. Да так, чтобы красиво было :) Величины могли изменяться от единиц до миллионов. Вот и "нашел" такой способ (с основанием 10 логарифм).

И кстати. Более правильно, наверное, будет так:

$result=ceil( log( $n,2)+1 );

Спустя 2 минуты, 42 секунды (20.09.2012 - 22:42) neadekvat написал(а):
Цитата (sergeiss @ 20.09.2012 - 23:39)
Хотя, конечно, не до конца понятно, что же хочет ТС

Вот-вот. Это довольно странное деление.

Цитата (sergeiss @ 20.09.2012 - 23:39)
Вот и "нашел" такой способ (с основанием 10 логарифм).

Как обычно, все самое интересное - за рамками стандартной программы)

Спустя 3 минуты, 6 секунд (20.09.2012 - 22:45) sergeiss написал(а):
Цитата (neadekvat @ 20.09.2012 - 23:42)
Как обычно, все самое интересное - за рамками стандартной программы

Стандартная программа - она и есть стандартная. А дальше думать надо самому уже.

Спустя 9 минут, 2 секунды (20.09.2012 - 22:54) sergeiss написал(а):
Насчет "не было", "за рамками программы"... Давай думать, откуда получается формулка-то smile.gif

Для начала. Что такое (в десятично системе исчисления) число такого-то порядка? Например, 2-го. Это число "больше" 10^1, но "меньше или равно" 10^2. Т.е. от 11 до 100. А как найти порядок величины? Правильно, взять от него логарифм. По основанию 10. Округлить вверх до целого и получить искомую величину. Верно? Верно.

Судя по описанию алгоритма, автору надо найти что-то подобное, но только в двоичной системе исчисления. Т.е. определить, находится ли число в диапазоне: 1-2, 3-4, 5-8, 9-16, 17-32, 33-64 и т.д. Нижняя граница диапазона (1+2^(n-1)), верхняя границы = (2^n). А дальше уже использование логарифма по основанию 2 уже само просится smile.gif Ну и (+1), дабы удовлетворить условию задачи полностью.
Ну, и в конце надо округлить. Все-таки CEIL() (округление "вверх") тут более правильно будет.

Спустя 19 минут, 49 секунд (20.09.2012 - 23:14) neadekvat написал(а):
sergeiss, да шо тут думать, я знакомому математику сказал: "Оказывается...", а он мне ответил удивленным взглядом и "Ну естественно..".

Вот все, что ты дальше написал.. Во-первых, я бы не стал за автора додумывать, что ему нужно. Возможно, если формализовывать и вводить термины, то задача будет примерно похожа, но даже автор не скажет "Да-да, именно то", иначе бы он не задавал таких вопросов, как в первом посте.

Ты в свое время не на математика учился?) Очень смахивает на теоретические формулировки, которые я всегда пропускал мимо, считая бессмысленной схоластикой, да простят меня за тавталогию.

Спустя 7 минут, 35 секунд (20.09.2012 - 23:21) sergeiss написал(а):
Цитата (neadekvat @ 21.09.2012 - 00:14)
Ты в свое время не на математика учился?) Очень смахивает на теоретические формулировки, которые я всегда пропускал мимо, считая бессмысленной схоластикой, да простят меня за тавталогию.

Вообще, я выпускник радиофака нижегородского университета... Кафедра математики, однако smile.gif
Впрочем, тут и теории нету никакой.

Цитата (neadekvat @ 21.09.2012 - 00:14)
иначе бы он не задавал таких вопросов, как в первом посте.

А вот это вовсе не факт. То, что несложно для одного, может быть сложным для другого.

Спустя 13 минут, 46 секунд (20.09.2012 - 23:35) neadekvat написал(а):
Цитата (sergeiss @ 21.09.2012 - 00:21)
Кафедра математики, однако

Как и думал, однако smile.gif

Цитата (sergeiss @ 21.09.2012 - 00:21)
То, что несложно для одного, может быть сложным для другого.

Возможно, просто я посчитал, что приведенная тобой формулировка никак не соответствует формату вопроса автора. Конечно, есть вероятность, что он в должной мере соотнес свое красноречие с нашим невежеством.. (с)

Спустя 8 часов, 29 минут, 39 секунд (21.09.2012 - 08:05) sergeiss написал(а):
Цитата (neadekvat @ 21.09.2012 - 00:35)
Конечно, есть вероятность, что он в должной мере соотнес свое красноречие с нашим невежеством.. (с)

Я по-другому на это смотрю. Человек может прекрасно понимать, что ему надо. Но при формулировании вопроса может не правильно оценить, как его слова воспримут другие люди. У меня тоже так бывает зачастую smile.gif
Второй вариант - это когда человек "примерно" знает, что ему надо, но не может это точно сформулировать. Этот вариант на форуме встречается достаточно часто.

Спустя 1 минута, 8 секунд (21.09.2012 - 08:06) Michael написал(а):
print log(15, 2); выдаст 3.9068905956085, это как раз точно сколько 15 делится на 2. Но не 5.
2^4 уже будет 16 wink.gif .

Спустя 15 минут, 33 секунды (21.09.2012 - 08:21) sergeiss написал(а):
Michael - я ж формулу с "округлением вверх" писал, получаем как раз то, что надо!

Спустя 5 минут, 11 секунд (21.09.2012 - 08:26) Michael написал(а):
sergeiss, но то понятно что твоя формула работает, ты под результат 5 ее составил.
Просто сам результат 5 что то другое но не деление. Для меня например логичен результат - 3 - сколько раз 15 поделится на 2 чтобы быть недробным числом.

Спустя 36 минут, 2 секунды (21.09.2012 - 09:02) sergeiss написал(а):
Michael - я уже писал в теме, что, по сути дела, задача сводится к следующей (как я ее понял, повторю еще раз): надо определить, какого порядка данное число в двоичной системе исчисления, плюс - добавить 1 к полученному результату.
15 находится между 9 и 16, т.е. в диапазоне (2^3+1) - (2^4). Получаем логарифм, округляем "вверх" и получаем 4. Т.е. то, что число находится именно в этом диапазоне. И еще "плюс 1". Итого = 5. И это будет верно для любого числа от 9 до 16!
Если взять число от 17 до 32, то по моему алгоритму получим число 6. И это также соответствует поставленной задаче smile.gif
Ну, и так далее. Причем, без циклов безо всяких.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.