Go语言实战案例-判断一个数是否为质数

在《Go语言实战案例》中 案例11:判断一个数是否为质数 的完整内容,适合初学者练习条件判断、循环控制与函数编写。


案例11:判断一个数是否为质数

🔢 数学判断 | 🔁 循环与条件 | 🧠 初阶逻辑思维训练


一、案例目标

编写一个程序,判断用户输入的正整数是否是质数(又称素数)。


二、应用场景举例

  • 数学题目求解
  • 加密算法中的大质数判定(如RSA)
  • 数学建模、筛选质数列表等

三、涉及知识点

知识点 说明
质数定义 只能被 1 和它本身整除的自然数(大于1)
for 循环 判断是否能被其他数整除
条件语句 if / else 判断是否满足质数条件
函数封装 判断逻辑封装为独立函数

四、功能需求

  1. 用户输入一个正整数;
  2. 判断该数是否为质数;
  3. 输出"是质数"或"不是质数"。

五、完整代码实现

go 复制代码
package main

import (
	"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 int
	fmt.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 不是一个质数。

七、核心实现解析

go 复制代码
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)

🔚 小结

本案例锻炼了你对:

  • 条件判断;
  • 循环控制;
  • 数学基础逻辑(质数定义);
  • 函数封装;

的掌握和应用。

✅ 质数判断是很多算法和加密技术的基础逻辑,掌握它为进阶算法打下基础。


相关推荐
笃行3501 小时前
SQLServer数据迁移之后,那张报表还能不能秒出
后端
LucianaiB1 小时前
别再被 AI 骗了:我把腾讯云 4 个 Skill 做成了个「AI 打假侦探」,过程的一个小配置坑惨了我
后端
candyTong2 小时前
Claude Code 如何恢复一段会话
后端·架构·ai编程
En^_^Joy3 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
IT_陈寒6 小时前
Python线程池吞了异常还不告诉我,这谁顶得住啊
前端·人工智能·后端
小强库计算机毕业设计6 小时前
SpringBoot+Vue3 学生宿舍管理系统实战
java·spring boot·后端·vue·学生宿舍管理系统
小狼1836 小时前
实践6|SDD 实战:AI 写的规格被推翻了四次
后端·claude
篮框坏了6 小时前
"DeepSeek Harness 实测:一毛钱干三活,但默认配置是个坑"
后端·ai编程
jobBridge216 小时前
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
人工智能·后端·编程语言
唐青枫7 小时前
看懂内存地址之后,才算真正入门 Zig:指针、切片与实战
后端