본문 바로가기

카테고리 없음

[리눅스/쉘 스크립트] bash 쉘로 약수 구하기

#!/bin/sh

printf "약수를 구합니다. 숫자를 입력하세요: "
read num
# 제곱근값으로 소수를 전달하면 bash에서 오류가 나기 때문에 정수로 전달하기 위해 scale=0를 설정했다. 
rootNum=$(bc <<< "scale=0; sqrt($num)")

printf "$num의 약수: \n"

for ((i=1; i<=rootNum; i++))
do
    # 어떤 정수로 나눠지면, 나누는 수와 나눠지는 수를 한쌍으로 출력한다
    if (( $num % $i == 0 ))
    then 
        #몫을 임시 저장. 나머지는 0임. (분모 몫) 형식으로 출력
        tmp=$(($num/$i))
        printf "($i   $tmp)\n"
    fi
done
printf "\n"

--실행 결과--
[Don@localhost BASH]$ sh getDivisor.sh 
약수를 구합니다. 숫자를 입력하세요: 100
100의 약수: 
(1   100)
(2   50)
(4   25)
(5   20)
(10   10)

[Don@localhost BASH]$ sh getDivisor.sh 
약수를 구합니다. 숫자를 입력하세요: 4294145925
4294145925의 약수: 
(1   4294145925)
(3   1431381975)
(5   858829185)
(9   477127325)
(15   286276395)
(25   171765837)
(45   95425465)
(75   57255279)
(225   19085093)