3 s/.*/&;9aaaaaaaaa8aaaaaaaa7aaaaaaa6aaaaaa5aaaaa4aaaa3aaa2aa1a0/
5 s/\(a*\)\([0-9]\)\([0-9]*;.*\2\(a*\)\)/\1\1\1\1\1\1\1\1\1\1\4\3/
9 # Compute a few common factors for speed. Clear the subst flag
12 # These are placed here to make the flow harder to understand :-)
30 s/^\(aa*\)\1\{6\}$/\1/
33 s/^\(aa*\)\1\{4\}$/\1/
44 # The quotient of dividing by 11 is a limit to the remaining prime factors
45 s/^\(aa*\)\1\{10\}/\1=&/
47 # Pattern space looks like CANDIDATE\nNUMBER. When a candidate is valid,
48 # the number is divided and the candidate is tried again
50 /^\(a\{7,\}\)=\1\1*$/! {
51 # Decrement CANDIDATE, and search again if it is still >1
55 # Print the last remaining factor: since it is stored in the NUMBER
56 # rather than in the CANDIDATE, swap 'em: now NUMBER=1
57 s/\(.*\)=\(.*\)/\2=\1/
60 # We have a prime factor in CANDIDATE! Print it
62 s/=.*/;;0a1aa2aaa3aaaa4aaaaa5aaaaaa6aaaaaaa7aaaaaaaa8aaaaaaaaa9/
65 s/^\(a*\)\1\{9\}\(a\{0,9\}\)\([0-9]*;.*[^a]\2\([0-9]\)\)/\1\4\3/
71 s/^\(a*\)\(=b*\)\1/\1\2b/
75 # If NUMBER = 1, we don't have any more factors