Go语言实战案例-判断一个数是否为质数
在《Go语言实战案例》中 案例11:判断一个数是否为质数 的完整内容,适合初学者练习条件判断、循环控制与函数编写。
案例11:判断一个数是否为质数
🔢 数学判断 | 🔁 循环与条件 | 🧠 初阶逻辑思维训练
一、案例目标
编写一个程序,判断用户输入的正整数是否是质数(又称素数)。
二、应用场景举例
- • 数学题目求解
- • 加密算法中的大质数判定(如RSA)
- • 数学建模、筛选质数列表等
三、涉及知识点
知识点 | 说明 |
质数定义 | 只能被 1 和它本身整除的自然数(大于1) |
for 循环 | 判断是否能被其他数整除 |
条件语句 | if / else 判断是否满足质数条件 |
函数封装 | 判断逻辑封装为独立函数 |
四、功能需求
- 1. 用户输入一个正整数;
- 2. 判断该数是否为质数;
- 3. 输出“是质数”或“不是质数”。
五、完整代码实现
package mainimport ("fmt""math"
)// 判断一个数是否为质数
func isPrime(n int) bool {if n <= 1 {return false}sqrtN := int(math.Sqrt(float64(n)))for i := 2; i <= sqrtN; i++ {if n%i == 0 {return false}}return true
}func main() {var num intfmt.Print("请输入一个正整数:")fmt.Scanf("%d", &num)if isPrime(num) {fmt.Printf("%d 是一个质数。\n", num)} else {fmt.Printf("%d 不是一个质数。\n", num)}
}
六、示例运行
示例1:
请输入一个正整数:13
13 是一个质数。
示例2:
请输入一个正整数:20
20 不是一个质数。
七、核心实现解析
func isPrime(n int) bool {if n <= 1 {return false // 小于等于1的数不是质数}sqrtN := int(math.Sqrt(float64(n))) // 只判断到√n即可for i := 2; i <= sqrtN; i++ {if n%i == 0 {return false // 存在其他因数}}return true
}
- • 用平方根优化判断范围是为了提升效率;
- • 如果
n
能被[2, √n]
中的任意一个整除,就不是质数; - • 函数封装后主函数调用简单、易于维护。
八、拓展建议
- 1. 批量判断多个数字是否为质数;
- 2. 输出某个区间内的所有质数;
- 3. 实现埃拉托色尼筛法生成质数表;
- 4. 支持输入负数与非法值并提示错误;
- 5. 用并发判断多个数是否为质数(goroutine)。
🔚 小结
本案例锻炼了你对:
- • 条件判断;
- • 循环控制;
- • 数学基础逻辑(质数定义);
- • 函数封装;
的掌握和应用。
✅ 质数判断是很多算法和加密技术的基础逻辑,掌握它为进阶算法打下基础。