Я понимаю, что когда я извлекаю квадратный корень (%:
) из числа, которое не дает целого числа, мой ответ - число с плавающей запятой. Я ищу нижний предел (<.
) квадратного корня, чтобы получить целочисленный результат. Есть ли у J встроенный способ добиться этого? Нужно ли мне прибегать к циклу, чтобы найти ответ?
Добавление нескольких запросов повышенной точности (x:
), конечно, этого не делает.
rootanddiffa =: 3 : '(y - root ^ 2);(root =. <. %: y)'
rootanddiffa 24
┌─┬─┐
│8│4│
└─┴─┘
rootanddiffa 26
┌─┬─┐
│1│5│
└─┴─┘
rootanddiffa 99999999999999x
┌──┬────────┐
│_1│10000000│
└──┴────────┘
rootanddiffb =: 3 : '(y - root ^ 2);(root =. x: <. x: %: y)'
rootanddiffb 24
┌─┬─┐
│8│4│
└─┴─┘
rootanddiffb 99999999999999x
┌──┬────────┐
│_1│10000000│
└──┴────────┘