nとmの間のiのすべてのi²の合計を計算する方法は?

nとmの間のiのすべてのi²の合計を計算する方法は?

n2つの値の間の整数2乗を合計するスクリプトをどのように作成できますか? and m、つまりすべての²の合計iwhere ifrom nto m?

答え1

1つの方法は次のとおりです。

#! /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

答え2

かなり基本的な方法:

#!/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

ループを作成する他の方法もあります。ねえ

答え3

Haskellを使用すると、次のことができます。

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

またはbashスクリプト形式で:

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

関連情報