A number is an   attractive number   if the number of its prime factors (whether distinct or not) is also prime.



Example

The number   20,   whose prime decomposition is   2 × 2 × 5,   is an   attractive number   because the number of its prime factors   (3)   is also prime.



Task

Show sequence items up to   120.



Reference

   The OEIS entry:   A063989: Numbers with a prime number of prime divisors.


#MAX=120
Dim prime.b(#MAX)
FillMemory(@prime(),#MAX,#True,#PB_Byte) : FillMemory(@prime(),2,#False,#PB_Byte)
For i=2 To Int(Sqr(#MAX)) : n=i*i : While n<#MAX : prime(n)=#False : n+i : Wend : Next
 
Procedure.i pfCount(n.i)
  Shared prime()
  If n=1          : ProcedureReturn 0     : EndIf
  If prime(n)     : ProcedureReturn 1     : EndIf
  count=0 : f=2
  Repeat
    If n%f=0      : count+1               : n/f
      If n=1      : ProcedureReturn count : EndIf
      If prime(n) : f=n                   : EndIf
    ElseIf f>=3   : f+2
    Else          : f=3
    EndIf
  ForEver
EndProcedure
 
OpenConsole()
PrintN("The attractive numbers up to and including "+Str(#MAX)+" are:")
For i=1 To #MAX  
  If prime(pfCount(i))
    Print(RSet(Str(i),4)) : count+1 : If count%20=0 : PrintN("") : EndIf
  EndIf  
Next
PrintN("") : Input()