From 027abd6ad5a8c9ac90b786f1574899767cab8057 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Thu, 30 Mar 2023 11:54:20 +0800 Subject: [PATCH] feat: add IsPrime --- mathutil/mathutil.go | 16 ++++++++++++++++ mathutil/mathutil_exmaple_test.go | 18 ++++++++++++++++++ mathutil/mathutil_test.go | 11 +++++++++++ 3 files changed, 45 insertions(+) diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index 8642a36..b404ebe 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -240,3 +240,19 @@ func PointDistance(x1, y1, x2, y2 float64) float64 { return math.Sqrt(c) } + +// IsPrimes checks if number is prime number. +// Play: todo +func IsPrime(n int) bool { + if n < 2 { + return false + } + + for i := 2; i <= int(math.Sqrt(float64(n))); i++ { + if n%i == 0 { + return false + } + } + + return true +} diff --git a/mathutil/mathutil_exmaple_test.go b/mathutil/mathutil_exmaple_test.go index c860d12..56a3bae 100644 --- a/mathutil/mathutil_exmaple_test.go +++ b/mathutil/mathutil_exmaple_test.go @@ -263,3 +263,21 @@ func ExamplePointDistance() { // Output: // 5 } + +func ExampleIsPrime() { + result1 := IsPrime(-1) + result2 := IsPrime(0) + result3 := IsPrime(1) + result4 := IsPrime(2) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // false + // false + // false + // true +} diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index a7e033a..b8b8e28 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -200,3 +200,14 @@ func TestPointDistance(t *testing.T) { assert.Equal(float64(5), result1) } + +func TestIsPrime(t *testing.T) { + assert := internal.NewAssert(t, "TestIsPrime") + + assert.Equal(false, IsPrime(-1)) + assert.Equal(false, IsPrime(0)) + assert.Equal(false, IsPrime(1)) + assert.Equal(true, IsPrime(2)) + assert.Equal(true, IsPrime(3)) + assert.Equal(false, IsPrime(4)) +}