实现线性筛
prime.sh
输出10000
以内的所有素数和。
-
不代入任何参数
-
直接输出素数和
-
使用线性筛
#!/bin/bash
# 素数筛
# 定义一个数组,数组里的元素只存放0或1,0表示该下标是素数,1表示该下标是合数
# 用素数去标记合数
num=10000
declare -a array
function __prime__() {
for ((i = 2; i<= $num; i++)); do
if [[ array[i] -eq 1 ]]; then
continue;
fi
sum=$[sum += i]
for (( j = 2 * i; j <= $num; j += i )); do
array[j]=1
done
done
}
__prime__
echo ${sum}