From 89a6a7f66488dda9b83603d4be515ac815eb60f9 Mon Sep 17 00:00:00 2001 From: VicRen Date: Thu, 7 Jan 2021 09:05:03 +0800 Subject: [PATCH] 20210107 --- 357_prime_generating_integers/main.go | 47 ++++++++++++++++++++++ 357_prime_generating_integers/main_test.go | 27 +++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 357_prime_generating_integers/main.go create mode 100644 357_prime_generating_integers/main_test.go diff --git a/357_prime_generating_integers/main.go b/357_prime_generating_integers/main.go new file mode 100644 index 0000000..c8742f1 --- /dev/null +++ b/357_prime_generating_integers/main.go @@ -0,0 +1,47 @@ +package main + +import "fmt" + +func main() { + sum := 0 + for i := 1; i < 100000000; i++ { + if isCompatible(i) { + sum += i + } + } + fmt.Println("sum=", sum) +} + +func isCompatible(n int) bool { + ds := listDivisors(n) + for _, i := range ds { + if !isPrime(i + n/i) { + return false + } + } + return true +} + +func listDivisors(input int) []int { + var ret []int + for i := 1; i <= input; i++ { + if input%i == 0 { + ret = append(ret, i) + } + } + return ret +} + +func isPrime(n int) bool { + if n <= 1 { + return false + } + divider := 2 + for divider < n { + if n%divider == 0 { + return false + } + divider++ + } + return true +} diff --git a/357_prime_generating_integers/main_test.go b/357_prime_generating_integers/main_test.go new file mode 100644 index 0000000..63bf385 --- /dev/null +++ b/357_prime_generating_integers/main_test.go @@ -0,0 +1,27 @@ +package main + +import "testing" + +func Test_isCompatible(t *testing.T) { + type args struct { + n int + } + tests := []struct { + name string + args args + want bool + }{ + { + "test1", + args{30}, + true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := isCompatible(tt.args.n); got != tt.want { + t.Errorf("isCompatible() = %v, want %v", got, tt.want) + } + }) + } +}