#!/bin/bash # vi:set ts=8 sw=4 et sta: # # Author : Clark J. Wang # License: GPLv2 # # $Date$ # $Author$ # $HeadURL$ # $Revision$ # #--------------------------------------------------------------------# is_prime() { local n=$1 # not a valid integer, return false [ "${n//[0-9]/}" ] && return 1 # 0, 1 are not prime ((n < 2)) && return 1 if ((n & 1)); then # odd local n_2=$((n >> 1)) local i for ((i = 3; i < n_2; i += 2)); do ((n % i)) || return 1 done return 0 else # even, only 2 is prime ((n > 2)) && return 1 || return 0 fi } #-- main() ----------------------------------------------------------# { declare -i N=$1 [ $N -le 0 ] && N=200 echo "Prime numbers in [1, $N) :" echo "------------------------------" count=0 for ((n = 0; n < N; ++n)); do if is_prime $n; then printf "%8d" $n ((++count % 8)) || echo fi done ((count % 8)) && echo echo "------------------------------" echo "Total: $count" }