Создание геометрической прогрессии
Задачка не совсем по javascript, но используется именно там)
Нужно составить весьма популярную, простую формулу (но у меня что-то толку не хватает). Условия формулы: Чем больше число X, тем меньше увеличивается число N. Например: X = 1, то N = 1 X = 110, то N = 9 X = 1120, то N = 23 X = 65000, то N = 70 Пример не точный, написал просто для наглядности. |
Untropee,
:)
function fn(x)
{
return 1 + Math.log(x)*Math.log(x)/2|0
}
alert([fn(1),fn(110),fn(1120),fn(65000)]);
|
Мощнейше) Я как на зло с Math плохо дружу, щас ещё в ней буду разбираться) Разбираюсь, как узнать сколько ещё нужно X, чтобы получить +1 N
|
Так и не смог узнать, сколько нужно X, чтобы получить +1 N.
Смог вычислить % сколько выполнено, но вот конечного числа так и не нашёл( |
Ребят, кто всё таки сможет доделать, либо по нужде переделать функцию, если в этой очень сложно?
Я заплачу, в ЛС договоримся, очень надо) |
Untropee,
чего доделать-то? |
Цитата:
Есть у нас например X = 56796, а N = 62.54 И вот сколько ещё нужно X чтобы вышло ровно 63? |
Untropee,
:-?
function fn(x)
{
return 1 + Math.log(x)*Math.log(x)/2|0
}
function foo(y)
{
return Math.ceil(Math.exp(Math.sqrt((y - 1)*2)))
}
var x = 20; //текущее х
var n = fn(x); //текущее n = 5
var nextX = foo(n+1); //24 будущее x при котором n увеличится
var z = nextX-x; //24 - 20 до следующего уровня 6 осталось 4
alert(fn(x+z)); //6
|
Untropee,
<script>
function fn(x)
{
return 1 + Math.log(x)*Math.log(x)/2|0
}
function foo(y)
{
return Math.ceil(Math.exp(Math.sqrt((y - 1)*2)))
}
for (var i=1; i<=100; i++) {document.write("n = "+i+" x = "+foo(i)+ " test = "+ (fn(foo(i)) == i && fn(foo(i)-1) != i) + "<br>")}
</script>
|
Всё отлично! Спасибо большое.
|
| Часовой пояс GMT +3, время: 20:05. |