From Test-Scratch-Wiki

Document.png Please expand this article or section. You can help by adding more information if you are an editor. More information might be found in a section of the talk page.


如果一个数字是正数,且只有两个因子(本身和“1”),则该数字是质数。

检测方法

素数的数量是无限的(这可以用欧几里德算法证明),这意味着存储所有素数是不可能的,因此,可能需要动态验证数字是否为素数。有几种方法可以做到这一点。

分解质因数

对一个数字进行因式分解时,它的因子会成对出现(除非是某个数的平方)。例如,数量12的因素是1 ↔ 122 ↔ 6,和3 ↔ 4

对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。质数大于等于2 不能被它本身和1以外的数整除。因此可以使用(() 除 () 的余数)积木来检测数字是否为质数。

如果在将其因式分解的过程中发现一个除数,就可以确定次数不是质数,就无需进一步分解了,脚本也就可以停止了。


Warning Note: 为了按顺序从小号开始生成素数,可以更改以下脚本,以便使用已知素数执行检查。

脚本

该脚本检查给定的数字n是否是质数,并将结果作为布尔值(true / false)存储在变量 结果中。

Warning Note: 在创建自定义积木时,建议(尽管没有必要)勾选“运行时不刷新屏幕”选项(特别是在检查较大的数时)。


定义 (n) 是否为质数?
变量 [测试因子 v] 设为 [2]
变量 [结果 v] 设为 [true] //  设置变量“结果”默认为假,如果结果为真,修改变量值。
如果 <(n) < (2)> 那么  // 这个数不是质数
  变量 [结果 v] 设为 [false]
否则
  重复直到 <(测试因子) > ([平方根 v] \( (n) \))>
    如果 <((n) mod (测试因子)) = [0]> 那么 
      变量 [结果 v] 设为 [false]
      停止 [这个程序 v]
    end
    变量 [测试因子 v] 改变 [1]
  end
end //  这个数不是质数