RosettaCodeData/Task/Semiprime/Ksh/semiprime.ksh
2023-07-01 13:44:08 -04:00

35 lines
525 B
Bash

#!/bin/ksh
# Semiprime - As translated from C
# # Variables:
#
# # Functions:
#
# Function _issemiprime(p2) - return 1 if p2 semiprime, 0 if not
#
function _issemiprime {
typeset _p2 ; integer _p2=$1
typeset _p _f ; integer _p _f=0
for ((_p=2; (_f<2 && _p*_p<=_p2); _p++)); do
while (( _p2 % _p == 0 )); do
(( _p2 /= _p ))
(( _f++ ))
done
done
return $(( _f + (_p2 > 1) == 2 ))
}
######
# main #
######
integer i
for ((i=2; i<100; i++)); do
_issemiprime ${i}
(( $? )) && printf " %d" ${i}
done
echo