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以外的數整除。因此可以使用(() 除 () 的餘數)積木來檢測數字是否為質數。

如果在將其因式分解的過程中發現一個除數,就可以確定次數不是質數,就無需進一步分解了,腳本也就可以停止了。



Note Note: 為了按順序從小號開始生成素數,可以更改以下腳本,以便使用已知素數執行檢查。

腳本

該腳本檢查給定的數字n是否是質數,並將結果作為布爾值(true / false)存儲在變量 结果中。


Note Note: 在創建自定義積木時,建議(儘管沒有必要)勾選「運行時不刷新螢幕」選項(特別是在檢查較大的數時)。


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