#!/bin/bash
#author:cuipeng
read -p "請輸入乙個大於1的整數: " num
num1=
$(bc
<<< "sqrt($num)
")reult=true
for x in `
seq 2 $num1`
do num2=$(
expr $num % $x)
if [ $num2 -eq 0 ];then
reult=false
break
fidone
if [ $reult == true -a $num -ne 1 ];then
echo "
$num是素數"
else
echo
"$num不是素數"
fi
首先我們要知道素數是什麼:素數也稱質數,指乙個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數。
那麼如何判斷乙個數是否為素數:最簡單的方法就是試除法了,將該數n用小於等於根號n的所有素數去試除,若均無法整除,n則為素數。
那麼在程式設計中,通常採用2到根號n之間的所有整數去試除,若均無法整除,則n為素數。
read -p "請輸入乙個大於1的整數: " num
# read是用來讀取使用者輸入資訊的命令,能夠把接收到的使用者輸入資訊賦值給後面的指定變數,-p引數用於向使用者顯示一定的提示資訊。
# 這裡是將使用者輸入的資訊賦值給num變數。
num1=
$(bc
<<< "sqrt($num)
")#num1=$(
echo
|awk '')
# 使用bc命令,計算變數num值的平方根,取整,將值賦值給變數num1。
# 當然bc命令需要安裝,也可以使用awk。
reult=true
# 定義變數reult布林值為true
for x in `
seq 2 $num1`
# 迴圈從序列中提取值賦值給變數x。
# "seq 2 $num1"表示生成乙個從2到變數num1的連續序列,如"seq 2 5"即生成2、3、4、5。
do num2=
$(expr $num % $x)
# 使用expr進行取餘計算,賦值給num2。if[
$num2 -eq 0 ]
;then
# 使用if語句判斷變數num2是否等於0(等於0表示這個數被整除,不為素數),等於0則執行以下**。
reult=false # 更改變數reult布林值為false。
break
# 結束當前迴圈,但會執行迴圈之後的所有**。
fidoneif[
$reult
==true -a $num -ne 1 ]
;then
# if判斷變數reult布林值是否為true且變數num值不等於1,滿足則執行以下**。
echo
"$num是素數"
else
# 否則就執行以下**,即變數reult布林值是為false。
echo
"$num不是素數"
fi
注:關於bc命令用法跳轉
判斷乙個數是否是素數
素數釋義 曾稱質數。乙個大於1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。如2,3,5,7,11,13,17 public boolean isprime int n for int i 2 i從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數...
判斷乙個數是否是素數
一 判斷乙個數是否是素數 思想 拿比自己小的整數依次進行比較 public string issu int a return 是 演算法改進 只要小於該數字的二次根就可以了,因為大於該數字的二次根的數字也是不能整除的 public string issu int a return 是 二 實現乙個氣...
判斷乙個數是否為素數
判斷乙個數n是否是素數,只需要判斷它是否能被2到n之間的數整除就行了,若不能被整除,則說明是素數。考慮到某數大於n 2時,n不可能被該數整除,故只需遍歷2 n 2即可。更進一步,由合數定理可知,若乙個數是合數,則它的最小質因數必小於等於該數的平方根,由此可得更為高效的 如下 include incl...