n
2つの値の間の整数2乗を合計するスクリプトをどのように作成できますか? and m
、つまりすべての²の合計i
where i
from n
to 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]]"