shell脚本版素数筛

实现线性筛

prime.sh

输出10000以内的所有素数和。

  1. 不代入任何参数

  2. 直接输出素数和

  3. 使用线性筛

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


posted @ 2021-01-21 18:13  ydqun  阅读(122)  评论(0编辑  收藏  举报