Найти максимальное значение функции - QBasic
Формулировка задачи:
Задается функция, определенная на натуральных числах
интервал на котором ищется ее максимальное значение
(1; 1000)
теперь определение самой функции:
(лучше приведу на примере)
дано число 12. значение функции от этого числа
sin1 + sin2 + sin3 + sin4 + sin6 (все числа делители числа 12)
другой пример (число 13)
значение функции: sin1 (всё, других делителей числа 13 нет)
(само число не считается делителем самого себя)
...
Программа посчитала и нашла максимум 6.589797 в точке 832
Вопросы
1. Есть ли иное решение?
2. Что может дать массив?
3. Ваше мнение?
Решение задачи: «Найти максимальное значение функции»
textual
Листинг программы
DIM s(1 TO 500) AS DOUBLE, sm AS DOUBLE, mx AS DOUBLE, i AS LONG, j AS LONG, n AS LONG, im AS LONG n = 1000 FOR i = 1 TO n \ 2 s(i) = SIN(i) NEXT i FOR i = 1 TO n sm = s(1) FOR j = 2 TO SQR(i) IF i MOD j = 0 THEN sm = sm + s(j) IF j * j <> i THEN sm = sm + s(i \ j) END IF NEXT j IF sm > mx OR i = 1 THEN mx = sm: im = i NEXT i PRINT mx, im
Объяснение кода листинга программы
- Объявляются переменные: — s(1 TO 500) AS DOUBLE — массив s с 500 элементами типа double, инициализированный нулями; — sm AS DOUBLE — переменная sm типа double, инициализированная нулём; — mx AS DOUBLE — переменная mx типа double, инициализированная нулём; — i AS LONG — переменная i типа long, инициализированная единицей; — j AS LONG — переменная j типа long, инициализированная единицей; — n AS LONG — переменная n типа long, инициализированная тысячей.
- Вычисляется значение переменной n: n = 1000.
- Заполняется массив s: FOR i%=1 TO n \ 2% s(i%) = SIN(i%). NEXT i%
- Находится максимальное значение среди элементов массива s: FOR i%=1 TO n% sm = s(1)% FOR j%=2 TO SQR(i%) IF i% MOD j% = 0 THEN sm = sm + s(j%) IF j% * j% <> i% THEN sm = sm + s(i% \ j%) END IF NEXT j% IF sm > mx OR i% = 1 THEN mx = sm: im = i% NEXT i%
- Выводятся найденные значения: PRINT mx, im.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д