Тройки Пифагора являются целочисленными решениями теоремы Пифагора, a2 + b2 = c2.
Хорошо известным примером является (3, 4, 5):
fmt.Println(3^2+4^2 == 5^2) // true
Тройка (6, 8, 10) - еще один пример, но Go, похоже, не согласен.
fmt.Println(6^2+8^2 == 10^2) // false
Ответ
Обводное ^ обозначает побитовый XOR в Go. Вычисление, написанное в базе 2, выглядит следующим образом:
0011 ^ 0010 == 0001 (3^2 == 1)
0100 ^ 0010 == 0110 (4^2 == 6)
0101 ^ 0010 == 0111 (5^2 == 7)
Конечно, 1 + 6 == 7; Go и Пифагор с этим согласен.
Чтобы повысить целое число до степени 2, используйте умножение.
fmt.Println(6*6 + 8*8 == 10*10) // true
В Go нет встроенной поддержки вычислений целочисленных степеней, но есть функция math.Pow для чисел с плавающей запятой.
Читайте также:
- Выбрать правильный тип: int против int64
- Преобразования между int, int64 и string в Golang
- Константы в Golang
Комментариев нет:
Отправить комментарий