ClearAll[GenerateSmoothNumbers] GenerateSmoothNumbers[max_?Positive] := GenerateSmoothNumbers[max, 7] GenerateSmoothNumbers[max_?Positive, maxprime_?Positive] := Module[{primes, len, vars, body, endspecs, its, data}, primes = Prime[Range[PrimePi[maxprime]]]; len = Length[primes]; If[max < Min[primes], {} , vars = Table[Unique[], len]; body = Times @@ (primes^vars); endspecs = Prepend[Most[primes^vars], 1]; endspecs = FoldList[Times, endspecs]; its = Transpose[{vars, ConstantArray[0, len], MapThread[N@Log[#1, max/#2] &, {primes, endspecs}]}]; With[{b = body, is = its}, data = Table[b, Evaluate[Sequence @@ is]]; ]; data = Sort[Flatten[data]]; data ] ] Take[GenerateSmoothNumbers[10^8, 2], 25] Take[GenerateSmoothNumbers[200, 3], 25] Take[GenerateSmoothNumbers[200, 5], 25] Take[GenerateSmoothNumbers[200, 7], 25] Take[GenerateSmoothNumbers[200, 11], 25] Take[GenerateSmoothNumbers[200, 13], 25] Take[GenerateSmoothNumbers[200, 17], 25] Take[GenerateSmoothNumbers[200, 19], 25] Take[GenerateSmoothNumbers[200, 23], 25] Take[GenerateSmoothNumbers[200, 29], 25] Take[GenerateSmoothNumbers[10^40, 3], {3000, 3002}] Take[GenerateSmoothNumbers[10^15, 5], {3000, 3002}] Take[GenerateSmoothNumbers[10^10, 7], {3000, 3002}] Take[GenerateSmoothNumbers[10^7, 11], {3000, 3002}] Take[GenerateSmoothNumbers[10^7, 13], {3000, 3002}] Take[GenerateSmoothNumbers[10^6, 17], {3000, 3002}] Take[GenerateSmoothNumbers[10^5, 19], {3000, 3002}] Take[GenerateSmoothNumbers[10^5, 23], {3000, 3002}] Take[GenerateSmoothNumbers[10^5, 29], {3000, 3002}] s = Select[Range[10^5], FactorInteger /* Last /* First /* LessEqualThan[503]]; s[[30000 ;; 30019]] s = Select[Range[10^5], FactorInteger /* Last /* First /* LessEqualThan[509]]; s[[30000 ;; 30019]] s = Select[Range[10^5], FactorInteger /* Last /* First /* LessEqualThan[521]]; s[[30000 ;; 30019]]