基数変換

\documentclass{jsarticle}
\begin{document}
\section*{位取り記数法の基数変換の一方法}
$A$$B$をそれぞれ1以上の整数とする。
ある非負整数が$M$桁の$A$進数で表記されているとき、
これを$B$進数で表記し直した場合の桁数$N$と各桁の値を求める。

$m$$0 \le m < M$の整数とし、
$A$進数表記での$A^m$の桁を$a_m$とする。
$a_m$$0 \le a_m < A$の整数である。
また、$n$$0 \le n < N$の整数とし、
$B$進数表記での$B^n$の桁を$b_n$とする。
$b_n$$0 \le b_n < B$の整数である。

すなわち、問題は$A$$B$$M$$a_m$から$N$$b_n$を求めることである。
これは以下の手順で求められる。

\begin{figure}[!h]
\setlength{\unitlength}{2em}
\begin{center}
\input{bt.pic}
\end{center}
\end{figure}

\end{document}
bt.flo
Down
Oval 2 1
  開始
Box
  $N \leftarrow 1$
  $b_0 \leftarrow 0$
  $m \leftarrow M-1$
Box 4 1.5
  $c \leftarrow a_m$
  $n \leftarrow 0$
Box 4 2.5
  $c \leftarrow A b_n + c$
  $b_n \leftarrow c \bmod B$
  $c \leftarrow \lfloor c / B \rfloor$
  $n \leftarrow n+1$
Choice . . Y N 4 2
  $n < N$
Tag
Right 1
Up 5
Left 3 *
ToTag
Down
Choice . . Y N
  $c > 0$
Tag
Box 4 1.5
  $N \leftarrow n$
  $m \leftarrow m-1$
Choice . Y . N
  $m \ge 0$
Tag
Left 1
Up 16
Right 3 *
ToTag
Down
Oval
  終了
ToTag
Right
Box 4 2
  $b_n \leftarrow c \bmod B$
  $c \leftarrow \lfloor c / B \rfloor$
  $n \leftarrow n+1$
Up 0.5
Left 5 *

bt.picはフローチャートをpicture環境に出力するflowで作成した。
flowはCTANにCで書かれたソースがある。

flow < bt.flo > bt.pic