Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > функция для проверки корня 8 степени


Автор: motorway 11.12.2008, 15:06
Привет.

Есть ли готовая функция в PHP, проверяющая существует ли целый корень 8 степени из числа? Например, для 256 она должна возвращать true, для 257 - false.

При этом она должна быть оптимальной по времени, например, если число оканчивается на 3, то заведомо не надо проверять это.

Просто я начал писать свою, но, может, уже есть оптимальная по быстродействию?

Да, кстати, это д.б. типа BCMath, т.е. для больших чисел

Автор: bars80080 11.12.2008, 15:47
нет. учитывая сколько ты задал условий

Автор: NLspieler 11.12.2008, 16:01
Написал за пару минут. Проверяет не только корень 8 степени, а любой. Подойдет? 


Код

<?php

function is_int_sqrt ($var , $stepen)
{
    $sqrt = pow ($var , 1/$stepen) ;
    
    if (floor($sqrt)==$sqrt) 
    {
        return TRUE ;
    }
    else 
    {
        return FALSE ;
    }
}


?>

Автор: motorway 11.12.2008, 16:12
Раньше я делал примерно так, но сейчас я написал свою, более сложную.

Она начинает считать корень 4 степени, только если есть 2 и т.п.
К тому же проверяет окончание числа.

Автор: NLspieler 11.12.2008, 16:20
А чем эта функция конкретно не устраивает?

Автор: motorway 11.12.2008, 16:27
просто зачем считать большой корень, если уже сразу ясно для каких-то чисел, что его нету?

Автор: Elfet 12.12.2008, 15:34
Можно использовать более хитрые алгоритмы если известны ещё какие-нибудь данные о исследуемых числах.  

Автор: SoWa 12.12.2008, 22:41
Разумеется, можно подойти к оптимизации с математической точки зрения и прописать сотни строк кода smile Но зачем? NLspieler в пределах языка написал простую функцию, использующую стандартные функции языка. За что ему и плюс smile

Автор: motorway 17.8.2009, 21:51
Понадобилось проверять, является ли число с большим кол-вом цифр 25-ой степенью. Как это сделать? Обычные функции вряд ли подойдут, нужны BC Math

Добавлено @ 22:03
А вообще что быстрее - извлекать корень 25-ой степени и проверять, целый он или нет, или сравнивать число с таблицей 25-ых степеней?

Автор: nerezus 17.8.2009, 22:43
Цитата

просто зачем считать большой корень, если уже сразу ясно для каких-то чисел, что его нету?
 А зачем делать лишние действия?

Добавлено через 7 минут и 25 секунд
Цитата

А вообще что быстрее - извлекать корень 25-ой степени и проверять, целый он или нет, или сравнивать число с таблицей 25-ых степеней?
 Нет разницы.
Но один из вариантов будет сложнее ;)

Автор: motorway 18.8.2009, 00:05
Сейчас мой вопрос касается более нового поста, а не старой части.

Автор: nerezus 18.8.2009, 00:09
Цитата

Сейчас мой вопрос касается более нового поста, а не старой части.
 Я и ответил: нет разницы.

А вообще почитал бы ты про оптимизацию: http://rsdn.ru/article/philosophy/Optimization.xml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)