判斷乙個整數是否為素數 確定乙個整數是否是2的冪

2021-10-12 09:16:36 字數 1451 閱讀 5379

給定乙個整數,編寫乙個函式來確定它是否是2的冪。(範圍:1 - 2^31-1)

測試用例:

輸入 : 16, 輸出 : true 因為 2^4 = 16

輸入 : 18, 輸出 : false.

最明顯的暴力方法就是除以2,然後檢查它是否達到1。

var poweroftwo = function(n)
由於給出的範圍在0-2^31-1之間,我們可以使用這個範圍來計算各種可能的輸出,將它們儲存到乙個集合中並進行檢查:

let set = new set();  for(let i=0;i<31;i++)  console.log(set);  var poweroftwo = function(n)
每一家公司提出乙個看起來易於理解和實現的問題時,這個問題一定與位操作有關。

對於計算機來說,一切都歸結為0和1的組合,包括數字。那麼讓我們來看看n=0到31時,表示2^n的數字是如何以位的形式表示的。

根據上圖我們找到規律是:2的冪的數字只有1位被設定為1,其餘的為0。

位操作符用於在最基本的層次上,即按記憶體中表示數值的位來運算元值。

按位非操作符由乙個波浪線(~)表示,,執行按位非的結果就是返回數值的反碼。

var num1 = 25; // 二進位制00000000000000000000000000011001var num2 = ~num1; // 二進位制11111111111111111111111111100110alert(num2); // -26
按位與操作符由乙個和號字元( & )表示,它有兩個操作符數。從本質上講,按位與操作就是將兩個數值的每一位對齊,然後根據下表中的規則,對相同位置上的兩個數執行按位與操作:

第乙個數值的位

第二個數值的位結果1

1110

0010

000 按位或操作符由乙個豎線符號(|)表示,同樣也有兩個運算元。按位或操作遵循下面這個真值表。

第乙個數值的位

第二個數值的位結果1

1110

1011

000 按位異或操作符由乙個插入符號(^)表示,也有兩個運算元。以下是按位異或的真值表。

第乙個數值的位

第二個數值的位結果1

1010

1011

000 因此,我們的**歸結為:

編寫函式判斷乙個整數是否為素數

題目內容 編寫函式int isprime int a 用來判斷整數a是否為素數,若是素數,函式返回1,否則返回0。呼叫該函式找出任意給定的n個整數中的素數。注意,1不是素數。輸入格式 一系列待判斷的正整數,以空格隔開,以0表示輸入結束。輸出格式 只輸出輸入的正整數中的素數,順序和輸入一致。資料間以乙...

編寫函式判斷乙個整數是否為素數

題目內容 編寫函式int isprime int a 用來判斷整數a是否為素數,若是素數,函式返回1,否則返回0。呼叫該函式找出任意給定的n個整數中的素數。注意,1不是素數。輸入格式 一系列待判斷的正整數,以空格隔開,以0表示輸入結束。輸出格式 只輸出輸入的正整數中的素數,順序和輸入一致。資料間以乙...

判斷乙個正整數是否素數

素數指的是只能被1和自身整除的大於1的整數 對於每個數num,並不需要從2判斷到num 1,這樣效率很低。假若乙個數可以進行因式分解,那麼分解得到的兩個數必將有乙個小於等於sqrt num 另乙個大於等於sqrt num 所以,我們只要遍歷sqrt num 即可,因為在sqrt num 左側找不到約...