Решение уравнения в натуральных числах (2) - QBasic
Формулировка задачи:
Решить в натуральных числах уравнение
[x^n] + [y^n] = [x^n] n = 2.5
функция [x] эквивалентна INT(x)
программа нашла 11 решений.
Листинг программы
- REM
- REM [x^n] + [y^n] = [x^n] n = 2.5
- REM
- REM 11 решений
- REM
- DIM M(1000) AS LONG
- CLS
- n = 2.5
- FOR i = 1 TO 1000
- M(i) = INT(i ^ n)
- NEXT i
- FOR z = 2 TO 500
- IF z MOD 50 = 0 THEN PRINT z
- FOR y = 10 TO z - 1
- FOR x = 1 TO y
- IF M(x) + M(y) = M(z) THEN
- PRINT x; y; z
- END IF
- NEXT x
- NEXT y
- NEXT z
- END
Решение задачи: «Решение уравнения в натуральных числах (2)»
textual
Листинг программы
- DIM f(1 TO 9999) AS LONG, x AS LONG, y AS LONG, z AS LONG, n AS DOUBLE, m AS LONG, l AS LONG, r AS LONG
- n = 2.5
- m = INT((2 ^ 31 - 1) ^ (1 / n))
- FOR x = 1 TO m
- f(x) = INT(x ^ n)
- NEXT x
- FOR z = 1 TO m
- FOR x = 1 TO z - 1
- IF f(x) > f(z) \ 2 THEN EXIT FOR
- y = INT((f(z) - f(x)) ^ (1 / n))
- FOR y = y TO y + 1
- IF f(z) - f(y) - f(x) = 0 THEN PRINT x; y; z
- NEXT y, x, z
Объяснение кода листинга программы
В этом коде:
- Создаются массив f размером 9999 и переменные x, y, z, n, m, l, r.
- Значение переменной n устанавливается равным 2.5.
- Вычисляется значение переменной m как целочисленного корня из (2 в степени 31 - 1) в степени 1/n.
- В цикле от 1 до m в массив f записываются значения x в степени n.
- В цикле от 1 до m в переменной z запрашивается значение от 1 до m-1, в переменной x - текущее значение z.
- Если значение в переменной f(x) больше половины значения в переменной f(z), то цикл прерывается.
- Вычисляется значение переменной y как целочисленного корня из (f(z) - f(x)) в степени 1/n.
- В цикле от y до y+1 проверяется, равно ли значение в переменной f(z) - f(y) - f(x) нулю. Если это так, то печатаются значения x, y, z.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д