Вы можете легко расширить это на любую базу, и вам нужно только знать, как долго число в данной базе.Я имею в виду следующее.Предположим в базе 10 число 25. Чтобы проверить предпосылку, нам нужно добавить 11. Но 11 - это не более чем:
25 + 11
= 25 + 10^1 + 10^0
= 25 + (10^2-1)/(10-1)
= 36 = 6^2
представьте теперь число 72 × 72 = 5184 , но представлено в базе 3 ( 5184 10 = 21010000 3 ).Делая теперь вычисления в базе 3, вы получите
21010000 + 11111111
= 21010000 + 3^7 + 3^6 + 3^5 + 3^4 + 3^3 + 3^2 + 3^1 + 3^0
= 21010000 + (3^8-1)/(3-1)
= 102121111 = 10102^2
, где 102121111 3 = 8464 10 = 92 10 ×92 10 .
Как вы заметили, все, что вам нужно сделать, это добавить число (b n - 1) / (b-1) на число и проверьте, если это квадрат.Здесь n представляет общее количество цифр числа x в базе b .
С помощью простой таблицы поиска вы делаете это вMathematica as:
b = 10
x = Table[n^2, {n, 1, 1000}];
Select[x, MemberQ[x, # + (b^IntegerLength[#, b] - 1)/(b - 1)] &];
{25, 289, 2025, 13225, 100489, 198025, 319225, 466489}
, а полный список от базы 2 до базы 10:
Table[Select[x, MemberQ[x, # + (b^IntegerLength[#, b] - 1)/(b - 1)] &], {b, 2, 10}]