Как я могу вычислить сумму всех i² для i между n и m?

Как я могу написать сценарий для суммирования квадратов целых чисел между двумя значениями n и m , что означает сумму всех i ², где i изменяется от n до m ?

-2
15.09.2016, 20:18
3 ответа

Один из способов сделать это:

#! /bin/sh
n=$1
m=$2
# Reference: http://math.stackexchange.com/q/48080
sum=$(( (m * (m + 1) * (2 * m + 1) - (n - 1) * n * (2 * n - 1)) / 6 ))
echo $sum

Результат:

./sum 3 7
135
3
28.01.2020, 05:14

Достаточно базовый подход:

#!/bin/bash
sum=0                      # initialise sum to zero
for i in $(seq $1 $2); do  # iterate from n to m
    sum=$((sum + i * i))   # add i² to sum
done
echo $sum                  # print sum

Позвонить:

./sum.sh n m

Есть и другие способы чтобы написать цикл, посмотрите здесь .

1
28.01.2020, 05:14

Используя Haskell, мы можем:

ghc -e 'sum [i*i | i <- [3..7]]'

или в формате сценария bash:

#!/bin/bash
ghc -e "sum [i*i | i <- [$1..$2]]"
1
28.01.2020, 05:14

Теги

Похожие вопросы