方法的目的:找出素數。
如果輸入數字是素數,則此方法會輸出booleaan ans ='true'。 否則它會返回false值。
由此可見,以找出是否一個數是質不是最簡單的邏輯..
例如,如果一個數字是11, 第1步 - 我們用NUM直到(NUM * NUM)乘以它是小於11. {因爲所有可能的情況都被測試,所以不需要測試超過值大於num * num的值}。
第2步 - 檢查是否將11/2的剩餘部分是零或不是,如果餘數不爲0則11不prime.if它分裂我們回到步驟1
所以循環會。 。
步驟1 NUM = 11,X = 2
步驟2 11%2!= 0所以轉到步驟1,NUM undivisible
步驟1 NUM = 11,X = 3
步驟2 11 %3!= 0
步驟1 num = 11,x = 4但x * x = 16和16> 11因此不再有循環,11是素數,因爲它不能被任何數字整除直到x = 3。
另一個例子可以是38 .. 步驟1 NUM 38,x = 2時
步驟2 38%2 == 0,所以餘數=零和ANS =假因而不再通過循環和 '38'不是素數。
一個更高級的方法來找到一個數字,如果它的素數或不是可以測試其可分性只針對素數。如果我們有相當大的數字作爲輸入,這實際上更高效。
public boolean what (int num) // number to be tested is passed
{
boolean ans = true; // default value
for (int x = 2; (x*x <= num) && ans; x=x+1) //looping till num is found divisibl
{
if ((num % x) == 0)
ans = false; // ans is false in case num is not prime
}
return ans; // num is prime
}
希望解釋幫助..如有任何疑問或幫助,請通知我。
做過並得到了對我沒有意義的結果......這個結果很好,因爲我在真正的測試中測試了它... – Batman
一個顛倒的英雄。只是嘗試一些輸入,並嘗試使用一些常識,沒有其他可選的方式。 – Adam