簡體   English   中英

檢查數字是否是bash中的質數

[英]check if a number is a prime in bash

我正在嘗試編寫bash腳本以查找數字是否為質數,但是我找不到腳本有什么問題

 #!/bin/bash

    #set -x
    echo -n "enter a number " 
    read isPrime
    count=2
    x=0 
    while [ $count -lt $isPrime ]; do 
        if [ `expr $isPrime % $count`-eq 0 ]; then
        echo "not prime"
         fi
        count=`expr $count + 1`

    done

    echo " it is prime"

    #set +x

使用factor將很容易。 但是,如果您以某種方式需要腳本,則可以實現類似以下的操作。 我不確定這是否是最好的算法,但是這比您的算法有效。

function is_prime(){
    if [[ $1 -eq 2 ]] || [[ $1 -eq 3 ]]; then
        return 1  # prime
    fi
    if [[ $(($1 % 2)) -eq 0 ]] || [[ $(($1 % 3)) -eq 0 ]]; then
        return 0  # not a prime
    fi
    i=5; w=2
    while [[ $((i * i)) -le $1 ]]; do
        if [[ $(($1 % i)) -eq 0 ]]; then
            return 0  # not a prime
        fi
        i=$((i + w))
        w=$((6 - w))
    done
    return 1  # prime
}

# sample usage
is_prime 7
if [[ $? -eq 0 ]]; then
  echo "not a prime"
else
  echo "it's a prime"
fi

您可以在此處找到有關所用算法的說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM