lc-go/solutions/13/q1390/solution.go
2026-01-04 14:44:06 +09:00

45 lines
722 B
Go

package q1390
import "slices"
func sfd(n int) int {
if n < 6 {
return 0
}
buf := [6]int{1, n}
divisors := buf[:2]
nn := n
for i := 2; i*i <= nn; i++ {
for nn%i == 0 {
nn /= i
if !slices.Contains(divisors, i) {
divisors = append(divisors, i)
}
if !slices.Contains(divisors, nn) {
divisors = append(divisors, nn)
}
if !slices.Contains(divisors, n/nn) {
divisors = append(divisors, n/nn)
}
if len(divisors) > 4 {
return 0
}
}
}
if len(divisors) == 4 {
return divisors[0] + divisors[1] + divisors[2] + divisors[3]
}
return 0
}
func sumFourDivisors(nums []int) int {
sum := 0
for _, n := range nums {
sum += sfd(n)
}
return sum
}
var _ = sumFourDivisors