如何使用 shell 对范围内的偶数求和



我必须为命令行获取 2 个参数。第一个参数是起始数字,第二个参数是整数数。这是我到目前为止所拥有的。

#!/bin/bash
x=$1
y=$2
z=0
k=$((x%2))
while [ $z -lt $y ]; do
  if [ $k == 0 ]; then
    echo $k
  fi
  x=$((x+1))
  echo $((x+1))
  k=$((x%2))
  z=$((z+1))
done

有没有人可以帮助我完成这个程序,我将不胜感激。

  1. 确定序列中的第一个和最后一个整数 m 和 n。
  2. 将 m 四舍五入到最接近的偶数以产生 m'
  3. 将 n 向下舍入到最接近的偶数产生 n'
  4. 现在计算 (m' + n')
  5. * (m' - n' + 2)/4

这个公式显然适用于我们有 m' = n' 的基本情况(当然两者都是偶数),减少到 (m' + m') * 2/4 = m'。证明:读者的练习。

举个例子:将 7 开始的范围内包含 15 个整数的偶数相加。

    m = 7
  1. , n = 7 + 15 - 1 = 21
  2. m' = 8
  3. n' = 20
  4. (m' + n') * (m' - n' + 2)/4 = (8 + 20) *
  5. (20 - 8 + 2)/4 = 28 * 14/4 = 98

检查结果

$ echo $(( 8 + 10 + 12 + 14 + 16 + 18 + 20 ))
98

Bash代码:读者练习。

这是第一个剪辑:

#!/bin/bash
cur=$1
max=$(( $1 + $2 ))
sum=0
# increment to next even number if starting value is odd
(( cur % 2 == 1 )) && (( ++cur ))
(( max % 2 == 1 )) && (( --max ))
for (( x=cur; x <= max; x+= 2 )); do
  (( sum += x ))
done
echo "$sum"

其工作原理如下:

# 4 = 4
$ ./sum-events 3 2
4
# 4 + 6 = 10
$ ./sum-events 4 2
10

相关内容

  • 没有找到相关文章

最新更新