这篇文章包括三个检查质数的程序。
一个是固定数字的质数检查,第二个是检查从用户控制台读取的质数,第三个是检查大int类型的质数检查。
数学中的质数是一个大于1的整数或正数,它可以除以自己和1。
例如,数字可以被除以余数为零。数字19只能被19或1除以。
质数的几个要点
- 数字0和1不是质数
- 所有的质数都是奇数,除了数字2是偶数。
- 质数不能被任何其他数字整除,除了它本身和1。
- 大于5且以5结尾的数字不是质数。
要理解下面的程序,你必须了解Go语言的以下特点。
检查质数与否的程序示例
以下是对一个给定的数字进行素数检查。
package main
import (
"fmt"
)
func CheckPrime(number int) {
isPrime := true
if number == 0 || number == 1 {
fmt.Printf(" %d is not a prime number\n", number)
} else {
for i := 2; i <= number/2; i++ {
if number%i == 0 {
fmt.Printf(" %d is not a prime number\n", number)
isPrime = false
break
}
}
if isPrime == true {
fmt.Printf(" %d is a prime number\n", number)
}
}
}
func main() {
CheckPrime(0) // not a prime
CheckPrime(1) // not a prime
CheckPrime(3) // a prime
CheckPrime(25) // not a prime
}
当上述程序被编译和执行时,输出为
0 is not a prime number
1 is not a prime number
3 is a prime number
25 is not a prime number
检查质数的程序示例 读取用户控制台输入的信息
下面的程序从用户控制台接收输入,并将其存储在变量数字中。函数CheckPrime被声明为int类型。
package main
import (
"fmt"
)
func CheckPrime(number int) {
isPrime := true
if number == 0 || number == 1 {
fmt.Printf(" %d is not a prime number\n", number)
} else {
for i := 2; i <= number/2; i++ {
if number%i == 0 {
fmt.Printf(" %d is not a prime number\n", number)
isPrime = false
break
}
}
if isPrime == true {
fmt.Printf(" %d is a prime number\n", number)
}
}
}
func main() {
var number int
fmt.Print("Enter Number To check Prime:")
fmt.Scanln(&number)
CheckPrime(number)
}
当上述程序被编译和执行时,输出为
Enter Number To check Prime:5
5 is a prime number
Enter Number To check Prime:23
23 is a prime number
Enter Number To check Prime:17
17 is a prime number
使用ProbablyPrime函数检查素数的程序示例
Probablyprime是一个函数math/big包。ProbablyPrime执行Miller Rabin测试来检查一个给定的数字是否是素数。
这对Int64类型的数字很有效。
package main
import (
"fmt"
"math/big"
)
func main() {
const number = 457862
if big.NewInt(number).ProbablyPrime(0) {
fmt.Printf(" %d is a prime number\n", number)
} else {
fmt.Printf(" %d is not a prime number\n", number)
}
}
输出是
457862 is not a prime number