Answer: Finite automata

Question: Write a regular expression for bit strings representing numbers divisible by 3.

Answer: First draw the finite automaton. This automaton has start state Sx and accepting state S0 and is similar to the answer for divisibility by 5.

 __  +---------+ +-------+  __
/ 0\ |1        v v      0| /1 \
\-->S0<---Sx-->S1        S2<--/
     ^   0  1  | |       ^
     |        1| |0      |
     +---------+ +-------+
To get to S0 from Sx the first time we must go through the regular expression ``0|1(01*0)*1''. Then after any time we go through ``0'' or ``1(01*0)*1'' we get back to S0. So the accepting expression is
      (0|1(01*0)*1)(0|1(01*0)*1)*


Answer / Finite automata / Review questions / 15-211 A, B