#Python 2, 130 bytes <!-- language: lang-py --> def f(n):S=`n`;print S+"."*all([n%10,set(S)<=set("0689"),eval("S[::-1]"+".replace('%s','%s')"*3%tuple("6a96a9"))!=S]);n and f(n-1) Defines a function `f` which prints the numbers to STDOUT, in descending order. Thanks to @xnor for showing me the `.replace` trick some time ago. Expanded: <!-- language: lang-py --> def f(n): S=`n` print S+"."*all([n%10, # Not divisible by 10 set(S)<=set("0689"), # Consists of 0689 eval("S[::-1]"+".replace('%s', '%s')"*3%tuple("6a96a9"))!=S]) # When rotated is not itself n and f(n-1) # Recurse if not 0