跳到主要内容

Shell脚本编程:求100内的质数 ?

参考答案:

在Shell脚本中,你可以使用以下脚本来找出100以内的所有质数:

#!/bin/bash

# 函数,用于检查一个数是否为质数
is_prime() {
    local num=$1
    if [ $num -lt 2 ]; then
        return 1
    fi
    for ((i=2; i*i<=num; i++)); do
        if [ $((num%i) -eq 0 ]; then
            return 1
        fi
    done
    return 0
}

# 遍历1到100,找出所有质数
for num in {2..100}; do
    is_prime $num
    if [ $? -eq 0 ]; then
        echo $num
    fi
done

这个脚本首先定义了一个is_prime函数,该函数接受一个数字作为输入,并检查这个数字是否为质数。如果数字小于2,或者能被2到其平方根之间的任何数字整除,那么它就不是质数。函数返回0表示输入的数字是质数,返回1表示不是。

然后,脚本遍历2到100之间的所有数字,对每个数字调用is_prime函数。如果函数返回0(即数字是质数),那么就打印出这个数字。

注意,这个脚本使用了Bash的算术扩展($((...)))和条件表达式([ ... ])。如果你的Shell环境不支持这些特性,你可能需要稍微修改一下脚本。

你可以将这个脚本保存为一个.sh文件,比如prime_numbers.sh,然后使用bash prime_numbers.sh命令来运行它。在运行之前,你可能需要给这个文件添加执行权限,可以使用chmod +x prime_numbers.sh命令来添加。