有比使用 openssl 更好的生成素数的方法。
如果您确实设置了此方法,请使用类似这样的方法(使用要检查的数字范围调用):
#!/bin/bash
# Usage: $0 <starting_number> <final_number>
N=$1
while (( N <= $2 )); do
# use bc to convert hex to decimal
openssl prime $N | awk '/is prime/ {print "ibase=16;"$1}' | bc
let N++
done
如果您想使用 openssl 生成的随机数执行此操作,请使用此(使用尝试次数调用):
#!/bin/bash
# Usage: $0 <count>
N=$1
while (( N-- > 0 )); do
# use bc to convert hex to decimal
openssl rand -hex 256 | xargs openssl prime -hex | awk '/is prime/ {print "ibase=16;"$1}' | bc
done
如果您不关心小数,请替换awk '/is prime/ {print "ibase=16;"$1}' | bc
为awk '/is prime/ {print $1}'
改编自: http: //www.madboa.com/geek/openssl/#prime