Skip to main content

质数 - CS50x 2023

学习目标

  • 练习使用 for 循环
  • 使用取模运算
  • 创建布尔函数

prime-numbers

背景

质数 定义为大于 1 的整数,其唯一因子为 1 和自身。因此,3是质数,因为它只有1和3两个因子。而4是合数,不是质数,因为它可以分解为2 × 2。在本实验中,你将编写一个算法来生成用户指定范围内的所有质数。

  • 提示

    • 取模运算可能派上用场,因为它产生两个整数相除的余数。
    • 根据定义,1 不是质数。
    • 只有一个偶数质数,即 2。

演示

PrimeGif

开始

  1. 使用你的 GitHub 帐户登录 cs50.dev
  2. 单击终端窗口内部并执行 cd
  3. $ 提示符下,键入 mkdir prime
  4. 现在执行 cd prime
  5. 然后复制并粘贴 wget https://cdn.cs50.net/2022/fall/labs/1/prime.c 到你的终端,以下载此实验的代码。
  6. 你需要完成布尔函数 prime,该函数用于判断一个数字是否为质数,是则返回 true,否则返回 false。

实现细节

判断一个数字是否为质数的最简单方法是,尝试用2到该数字本身减1之间的每个数字去除它。 如果能被其中任何一个数字整除而没有余数,那么该数字就不是质数。

初始代码中的 main 函数包含一个 for 循环,该循环遍历用户指定的范围,包括两端。 例如,如果用户为 min 输入 1,为 max 输入 100,则 for 循环将测试每个数字,从 1 到 100。 这些数字中的每一个都会传递给一个函数 prime,你将实现该函数以返回 truefalse,具体取决于该数字是否为质数。

思考题

  • 你能否优化寻找质数的算法,使其比检查一个数字是否能被 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 传递给你的程序的输入、它期望的输出以及你的程序实际给出的输出。

要评估你的代码风格(缩进和空格)是否正确,请在 $ 提示符下键入以下内容。

如何提交

无需提交! 这是一个可选的练习题。