Penholodigital squares: Difference between revisions

Content added Content deleted
(→‎{{header|Wren}}: Optimized - about 7 x speed up.)
(→‎{{header|Go}}: Updated in line with Wren example - about 5 x speed up.)
Line 83: Line 83:
smax, _ := strconv.ParseInt(reverse(digits[0:b-1]), b, 64)
smax, _ := strconv.ParseInt(reverse(digits[0:b-1]), b, 64)
max := int(math.Floor(math.Sqrt(float64(smax))))
max := int(math.Floor(math.Sqrt(float64(smax))))
factors := rcu.PrimeFactors(b - 1)
div := factors[len(factors)-1]
for i := min; i <= max; i++ {
for i := min; i <= max; i++ {
sq := i * i
if (i % div) != 0 {
if b == 10 && (sq%3) != 0 {
continue
continue
}
}
sq := i * i
digs := rcu.Digits(sq, b)
digs := rcu.Digits(sq, b)
containsZero := false
containsZero := false
key := 1
for _, dig := range digs {
for _, dig := range digs {
if dig == 0 {
if dig == 0 {
Line 95: Line 98:
break
break
}
}
key *= primes[dig-1]
}
}
if containsZero {
if containsZero {
continue
continue
}
key := 1
for _, dig := range digs {
key *= primes[dig-1]
}
}
if key == master {
if key == master {