如何计算 n 和 m 之间 i 的所有 i² 之和?

如何计算 n 和 m 之间 i 的所有 i² 之和?

如何编写一个脚本来对两个值n和之间的整数平方求和m,即所有 ² 的总和i,其中inm

答案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]]"

相关内容