Создание геометрической прогрессии
Задачка не совсем по 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, время: 01:32. |