From Test-Scratch-Wiki
![]() |
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 ↔ 12
,2 ↔ 6
,和3 ↔ 4
。
对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。质数大于等于2 不能被它本身和1以外的数整除。因此可以使用(() 除 () 的余数)
积木来检测数字是否为质数。
如果在将其因式分解的过程中发现一个除数,就可以确定次数不是质数,就无需进一步分解了,脚本也就可以停止了。
![]() | 为了按顺序从小号开始生成素数,可以更改以下脚本,以便使用已知素数执行检查。 |
脚本
该脚本检查给定的数字n是否是质数,并将结果作为布尔值(true / false)存储在变量 结果
中。
![]() | 在创建自定义积木时,建议(尽管没有必要)勾选“运行时不刷新屏幕”选项(特别是在检查较大的数时)。 |
定义 (n) 是否为质数? 变量 [测试因子 v] 设为 [2] 变量 [结果 v] 设为 [true] // 设置变量“结果”默认为假,如果结果为真,修改变量值。 如果 <(n) < (2)> 那么 // 这个数不是质数 变量 [结果 v] 设为 [false] 否则 重复直到 <(测试因子) > ([平方根 v] \( (n) \))> 如果 <((n) mod (测试因子)) = [0]> 那么 变量 [结果 v] 设为 [false] 停止 [这个程序 v] end 变量 [测试因子 v] 改变 [1] end end // 这个数不是质数