REM Поиск симметричного разложения числа
DECLARE FUNCTION perevod! (n%, p%, a%())
DECLARE FUNCTION proba! (a%(), k%)
DIM a%(16)
CLS
INPUT "Введите число из дипазона [0,30000] : ", n%
FOR p% = 2 TO n% - 1
k% = perevod(n%, p%, a%()): ' Перевод в p-ричную систему
IF proba(a%(), k%) <> 0 THEN
PRINT "Симметричное разложение с минимальным основанием : "
FOR i = 0 TO k% - 1
PRINT TAB(0); a%(i); "*"; p%; "^"; k% - i; "+";
NEXT i
PRINT : PRINT a%(0); "*"; p%; "^"; 0
END
END IF
NEXT p%
END
FUNCTION perevod (n%, p%, a%())
REM Перевод числа n в систему с основанием p
REM Цифры p-ричного числа запоминаются в массиве a
m% = n%
FOR i = 0 TO 15
a%(i) = m% MOD p%
m% = (m% - a%(i)) / p%
IF m% = 0 THEN perevod = i: EXIT FUNCTION
NEXT i
END FUNCTION
FUNCTION proba (a%(), k%)
REM Анализ числа, представленного k цифрами в массиве a
REM Если число - палиндром, то proba=1
proba = 1
FOR i = 0 TO k% / 2
IF a%(i) <> a%(k% - i) THEN proba = 0: EXIT FUNCTION
NEXT i
END FUNCTION