1. Check whether the last digit of the integer can be divided by 2 or not
2. Check whether the sum of all digits of the integer can be divided by 3 or not
3. Check whether the last digit of the integer can be divided by 5 or not
4. If all the above checks fails Check whether there is an integer from 7 to square root of number which is divide the number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"math" | |
"strconv" | |
) | |
func main() { | |
fmt.Printf("275489 is a prime : %t", isPrime(275489)) | |
} | |
func isPrime(num int) bool { | |
if num == 2 || num == 3 || num == 5 { | |
return true | |
} | |
if !canBeDivideBy2(num) && !canBeDivideBy3(num) && !canBeDivideBy5(num) { | |
isPrime := true | |
//If the number can not be divided by 2, 3 or 5 divide from 7 to squre root of the number to check the existence of a factor | |
for i := 7; i <= int(math.Sqrt(float64(num))); i++ { | |
if num%i == 0 { | |
isPrime = false | |
break | |
} | |
} | |
return isPrime | |
} | |
return false | |
} | |
// If the last digit can be divided by 2 whole number can be divided by 2 | |
func canBeDivideBy2(num int) bool { | |
numAsStr := strconv.Itoa(num) | |
lastNum, _ := strconv.Atoi(string(numAsStr[len(numAsStr)-1])) | |
return lastNum%2 == 0 | |
} | |
// If the digit sum can be divided by 3 whole number can be divided by 3 | |
func canBeDivideBy3(num int) bool { | |
numAsStr := strconv.Itoa(num) | |
sum := 0 | |
for i := 0; i < len(numAsStr); i++ { | |
iThNum, _ := strconv.Atoi(string(numAsStr[i])) | |
sum += iThNum | |
} | |
return sum%3 == 0 | |
} | |
//If the last digit can be divided by 5 whole number can be divided by 5 | |
func canBeDivideBy5(num int) bool { | |
numAsStr := strconv.Itoa(num) | |
lastNum, _ := strconv.Atoi(string(numAsStr[len(numAsStr)-1])) | |
return lastNum%5 == 0 | |
} |
No comments:
Post a Comment