Powerful numbers
Generation
func powerful(n, k=2) {
var list = []
func (m,r) {
if (r < k) {
list << m
return nil
}
for a in (1 .. iroot(idiv(n,m), r)) {
if (r > k) {
a.is_coprime(m) || next
a.is_squarefree || next
}
__FUNC__(m * a**r, r-1)
}
}(1, 2*k - 1)
return list.sort
}
for k in (2..10) {
var a = powerful(10**k, k)
var h = a.head(5).join(', ')
var t = a.tail(5).join(', ')
printf("For k=%-2d there are %d k-powerful numbers <= 10^k: [%s, ..., %s]\n", k, a.len, h, t)
}Output:
Counting
Output:
Last updated
Was this helpful?