Вычислите сумму квадратов нечетных чисел от 1 до n - Prolog
Формулировка задачи:
Вычислите сумму квадратов нечетных чисел от 1 до n.
Решение задачи: «Вычислите сумму квадратов нечетных чисел от 1 до n»
textual
Листинг программы
?- N = 5, findall(X*X, (between(1, N, X), \+ X mod 2 =:= 0), Xs), sum_list(Xs, S). N = 5, Xs = [1*1, 3*3, 5*5], S = 35.
Объяснение кода листинга программы
В данном коде:
N = 5- задается значение переменнойNравное 5.findall(X*X, (between(1, N, X), \+ X mod 2 =:= 0), Xs)-findall- функция, которая находит все решения для заданного предиката.X*X- это предикат, который умножает каждое числоXна само себя.(between(1, N, X), \+ X mod 2 =:= 0)- это предикат, который выбирает только нечетные числа от 1 доN.Xs- список всех найденных значенийX, удовлетворяющих предикату.
sum_list(Xs, S)-sum_list- функция, которая суммирует все числа в спискеXs.S- переменная, которая получает сумму всех чисел в спискеXs. Таким образом, данный код вычисляет сумму квадратов нечетных чисел от 1 до 5 и получает результат равный 35.