Я еще не опытный программист, но я подумал, что это интересная проблема, и я решил попробовать.
Треугольник, пятиугольник и шестиугольник
числа генерируются следующими
формулы:
- Треугольник T_ (n) = n (n + 1) / 2
1, 3, 6, 10, 15, ...
- Пятиугольник P_ (n) = n (3n − 1) / 2 1, 5, 12, 22, 35,
...
- Шестиугольная H_ (n) = n (2n − 1) 1,
6, 15, 28, 45, ...
Можно проверить, что T_ (285) =
P_ (165) = H_ (143) = 40755.
Найдите следующий номер треугольника, который
также пятиугольные и шестиугольные.
Описание задачи.
Я знаю, что гексагональные числа являются подмножеством треугольных чисел, что означает, что вам нужно только найти число, где Hn = Pn.
Но я не могу заставить свой код работать. Я знаю только язык Java, поэтому у меня проблемы с поиском решения в сети. В любом случае, надеюсь, кто-то может помочь. Вот мой код
public class NextNumber {
public NextNumber() {
next();
}
public void next() {
int n = 144;
int i = 165;
int p = i * (3 * i - 1) / 2;
int h = n * (2 * n - 1);
while(p!=h) {
n++;
h = n * (2 * n - 1);
if (h == p) {
System.out.println("the next triangular number is" + h);
} else {
while (h > p) {
i++;
p = i * (3 * i - 1) / 2;
}
if (h == p) {
System.out.println("the next triangular number is" + h); break;
}
else if (p > h) {
System.out.println("bummer");
}
}
}
}
}
Я понимаю, что это, вероятно, очень медленный и неэффективный код, но на данный момент меня это не особо волнует. Меня интересует только поиск следующего числа, даже если это займет годы моего компьютера.