18 lines
490 B
Text
18 lines
490 B
Text
func is_smooth_over_prod(n, k) {
|
|
|
|
return true if (n == 1)
|
|
return false if (n <= 0)
|
|
|
|
for (var g = gcd(n,k); g > 1; g = gcd(n,k)) {
|
|
n /= g**valuation(n,g) # remove any divisibility by g
|
|
return true if (n == 1) # smooth if n == 1
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
for p in (503, 509, 521) {
|
|
var k = p.primorial
|
|
var a = {|n| is_smooth_over_prod(n, k) }.first(30_019).last(20)
|
|
say ("30,000th through 30,019th #{p}-smooth numbers: ", a.join(' '))
|
|
}
|