45 lines
722 B
Go
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
|