Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция для проверки корня 8 степени 
:(
    Опции темы
motorway
Дата 11.12.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



Привет.

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

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

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

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

Это сообщение отредактировал(а) motorway - 11.12.2008, 15:14
PM MAIL   Вверх
bars80080
Дата 11.12.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нет. учитывая сколько ты задал условий
PM MAIL WWW   Вверх
NLspieler
Дата 11.12.2008, 16:01 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



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


Код

<?php

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


?>

PM MAIL   Вверх
motorway
Дата 11.12.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



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

Она начинает считать корень 4 степени, только если есть 2 и т.п.
К тому же проверяет окончание числа.
PM MAIL   Вверх
NLspieler
Дата 11.12.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



А чем эта функция конкретно не устраивает?
PM MAIL   Вверх
motorway
Дата 11.12.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



просто зачем считать большой корень, если уже сразу ясно для каких-то чисел, что его нету?
PM MAIL   Вверх
Elfet
Дата 12.12.2008, 15:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



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


--------------------
PM MAIL WWW Skype   Вверх
SoWa
Дата 12.12.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



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


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
motorway
  Дата 17.8.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



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

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

Это сообщение отредактировал(а) motorway - 17.8.2009, 22:04
PM MAIL   Вверх
nerezus
Дата 17.8.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

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

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

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
motorway
Дата 18.8.2009, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



Сейчас мой вопрос касается более нового поста, а не старой части.
PM MAIL   Вверх
nerezus
Дата 18.8.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

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

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.