孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

合数分解

#!/bin/sh
#把一个大于等于2以上的正整数,分解成质因子的连乘积

#shopt -s -o nounset
declare -i Num
declare -i i
declare -i cnt

while [[ Num -lt 2 ]]
do
    read -p "请输入一个2以上的正整数:" Num
done

i=2

echo -n $Num '= '
while ((Num>=i))
do
    cnt=0
    tmp=Num%i
    while [[ $tmp -eq 0 ]]
    do
        ((Num/=i))
        ((cnt++))
        tmp=Num%i
    done

    if [[ $cnt -gt 0 ]]; then
        echo -n $i
        [ $cnt -gt 1 ] && echo -n '^'$cnt
        [ $Num -gt 1 ] && echo -n ' * '
    fi
   
    ((i>=3 ? i+=2 : i++))
done
echo

posted on 2011-05-07 13:27  孤独的猫  阅读(247)  评论(0编辑  收藏  举报