质数 - CS50x 2023
学习目标
- 练习使用
for
循环 - 使用取模运算
- 创建布尔函数
背景
质数 定义为大于 1 的整数,其唯一因子为 1 和自身。因此,3是质数,因为它只有1和3两个因子。而4是合数,不是质数,因为它可以分解为2 × 2。在本实验中,你将编写一个算法来生成用户指定范围内的所有质数。
提示
- 取模运算可能派上用场,因为它产生两个整数相除的余数。
- 根据定义,1 不是质数。
- 只有一个偶数质数,即 2。
演示
开始
- 使用你的 GitHub 帐户登录 cs50.dev。
- 单击终端窗口内部并执行
cd
。 - 在
$
提示符下,键入mkdir prime
- 现在执行
cd prime
- 然后复制并粘贴
wget https://cdn.cs50.net/2022/fall/labs/1/prime.c
到你的终端,以下载此实验的代码。 - 你需要完成布尔函数
prime
,该函数用于判断一个数字是否为质数,是则返回 true,否则返回 false。
实现细节
判断一个数字是否为质数的最简单方法是,尝试用2到该数字本身减1之间的每个数字去除它。 如果能被其中任何一个数字整除而没有余数,那么该数字就不是质数。
初始代码中的 main
函数包含一个 for
循环,该循环遍历用户指定的范围,包括两端。 例如,如果用户为 min
输入 1
,为 max
输入 100
,则 for
循环将测试每个数字,从 1 到 100。 这些数字中的每一个都会传递给一个函数 prime
,你将实现该函数以返回 true
或 false
,具体取决于该数字是否为质数。
思考题
- 你能否优化寻找质数的算法,使其比检查一个数字是否能被 2 到小于它本身的每个数字整除更有效率? 你能想到另一种生成质数的方法吗?
如何测试你的代码
你的程序应按照以下示例运行。
prime/ $ ./prime
Minimum: 1
Maximum: 100
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
你可以使用 check50
检查你的代码,check50
是 CS50 在你提交时用来测试你的代码的程序,方法是在 $
提示符下键入以下内容。 不过,强烈建议你先自行测试!
check50 cs50/labs/2023/x/prime
绿色笑脸表示你的程序已通过测试! 红色皱眉表示你的程序输出了错误的结果. 访问 check50
输出的 URL,查看 check50
传递给你的程序的输入、它期望的输出以及你的程序实际给出的输出。
要评估你的代码风格(缩进和空格)是否正确,请在 $
提示符下键入以下内容。
如何提交
无需提交! 这是一个可选的练习题。