寻找素数-“;“因素”;在MacOS上找不到命令
我正在编写一个bash脚本来查找所有小于给定整数的素数 代码如下:寻找素数-“;“因素”;在MacOS上找不到命令,macos,bash,scripting,Macos,Bash,Scripting,我正在编写一个bash脚本来查找所有小于给定整数的素数 代码如下: #!/bin/bash BADARGS=65 if [ -z $1 ] then echo "Usage:`basename $0` cannot have a null parameter." exit $BADARGS elif [ $1 -lt 2 ] then echo "Usage:`basename $0` should have the value 2 or more as the parame
#!/bin/bash
BADARGS=65
if [ -z $1 ]
then
echo "Usage:`basename $0` cannot have a null parameter."
exit $BADARGS
elif [ $1 -lt 2 ]
then
echo "Usage:`basename $0` should have the value 2 or more as the parameter."
exit $BADARGS
fi
TRUE=0
FALSE=
Primes(){
checkPrime=( $(factor $1) ) # this puts factors into array
if [ -z "${checkPrime[2]}" ] # third element is null
then
return $TRUE
else
return $FALSE
fi
}
printf "2 "
let "n = 3"
while [ $n -le $1 ]
do
if Primes $n
then
printf "$n "
fi
let "n += 2"
done
printf "\n"
# END
我正在使用MacOS,执行脚本时收到以下错误消息:
Jessicas-MacBook-Pro:Documents jessicalott$ ./primes.sh 10
2 ./primes.sh: line 16: factor: command not found
3 ./primes.sh: line 16: factor: command not found
5 ./primes.sh: line 16: factor: command not found
7 ./primes.sh: line 16: factor: command not found
9
我今天早上开始在bash上写文章,所以如果有任何帮助,我将不胜感激。我想这可能与我没有使用Linux有关,但我希望不是这样。
factor
不是标准的Unix命令。Linux有它。OSX没有。如评论中所述,factor是GNU coreutils的一部分。您可以通过以下方式安装coreutils:
之后,脚本中的
factor
可以替换为/usr/local/bin/gfactor
。我在使用较短的自制安装时出错,但这对我有效:
brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt
保存此
Makefile
并运行make
。它从NetBSD CVS存储库下载因子
和素数
的源代码并构建它们。如果没有curl
,请尝试make G=wget
W= http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/games
G= curl -L -R -O
CFLAGS= -Wall -Wextra -O2 -Dlint -D__dead= -DHAVE_OPENSSL
all: get bin
bin: factor primes
factor: factor.o pr_tbl.o
$(CC) -o $@ factor.o pr_tbl.o -lcrypto
primes: primes.o pr_tbl.o pattern.o spsp.o
$(CC) -o $@ primes.o pr_tbl.o pattern.o spsp.o -lm
clean:
-rm -f factor primes factor.o pattern.o pr_tbl.o primes.o spsp.o
get:
$G $W/factor/factor.6
$G $W/factor/factor.c
$G $W/primes/pattern.c
$G $W/primes/primes.6
$G $W/primes/primes.c
$G $W/primes/primes.h
$G $W/primes/pr_tbl.c
$G $W/primes/spsp.c
(Makefile更新为包含spsp.c
)
也可以在上找到,具体来说,它是GNU
coreutils
软件包的一部分,您可以使用brew
、端口
、fink
,或者从源代码处安装它。@chepner:如果您输入这个作为答案,我将投票支持您的答案并删除我的答案。这不是一个好答案。要指出明显的问题,brew搜索因子
和brew cask安装因子
将找到。搜索苹果商店也是如此。您需要的是brew安装coreutils
@smci:brew
也不是macOS的一部分,因此brew安装coreutils
在没有事先安装的情况下无法工作。@DMac:gfactor
不是标准macOS(以前的OS X)安装的一部分。这似乎不如使用brew这样的软件包管理器安装。代码不知道它来自何处,因此永远无法更新自身。@smci,当然可以,但我的解决方案没有依赖项。True。NetBSD的primes
是否在brew、MacOS、Gnu等的任何软件包中提供?我搜索了一下,但没找到。我问了一下
W= http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/games
G= curl -L -R -O
CFLAGS= -Wall -Wextra -O2 -Dlint -D__dead= -DHAVE_OPENSSL
all: get bin
bin: factor primes
factor: factor.o pr_tbl.o
$(CC) -o $@ factor.o pr_tbl.o -lcrypto
primes: primes.o pr_tbl.o pattern.o spsp.o
$(CC) -o $@ primes.o pr_tbl.o pattern.o spsp.o -lm
clean:
-rm -f factor primes factor.o pattern.o pr_tbl.o primes.o spsp.o
get:
$G $W/factor/factor.6
$G $W/factor/factor.c
$G $W/primes/pattern.c
$G $W/primes/primes.6
$G $W/primes/primes.c
$G $W/primes/primes.h
$G $W/primes/pr_tbl.c
$G $W/primes/spsp.c