Сортировка массива по возрастанию суммы делителей элементов этого массива - QBasic
Формулировка задачи:
Задан массив, заполненный случайными целыми
положительными числами. Произвести его сортировку
в порядке возрастания сумм всех делителей каждого
элемента массива
примечание
Само число не считается для себя делителем.
Листинг программы
- DECLARE FUNCTION SD! (n!)
- CLS
- RANDOMIZE TIMER
- n = 12
- DIM A(1 TO n)
- FOR i = 1 TO n
- A(i) = FIX(80 * RND) + 10
- PRINT A(i);
- NEXT
- PRINT : PRINT
- FOR i = 1 TO n - 1
- FOR j = i + 1 TO n
- IF SD(A(i)) > SD(A(j)) THEN SWAP A(i), A(j)
- NEXT j, i
- FOR i = 1 TO n
- PRINT A(i);
- NEXT
- END
- FUNCTION SD (n)
- FOR i = 2 TO n / 2
- IF n MOD i = 0 THEN
- s = s + i
- END IF
- NEXT
- SD = s + 1
- END FUNCTION
Решение задачи: «Сортировка массива по возрастанию суммы делителей элементов этого массива»
textual
Листинг программы
- FOR i=2 TO SQR(n)
Объяснение кода листинга программы
- FOR i=2 TO SQR(n) - цикл, выполняющийся от 2 до квадратного корня из n (включительно)
- SQR(n) - вычисление квадратного корня из n (возможно, с использованием функции SQRT)
- n - количество элементов в массиве
- В каждой итерации цикла выполняется следующая последовательность действий:
- Вычисляется сумма делителей текущего элемента массива (возможно, с использованием цикла и функций деления и остатка от деления)
- Если эта сумма делится на текущий элемент массива без остатка, то этот элемент заменяется на сумму его делителей
- Переход к следующему элементу цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д