首頁 >web前端 >js教程 >JavaScript 程式檢查所有陣列元素是否可以透過旋轉數字轉換為 pronic 數

JavaScript 程式檢查所有陣列元素是否可以透過旋轉數字轉換為 pronic 數

PHPz
PHPz轉載
2023-09-17 17:05:021218瀏覽

JavaScript 程序检查所有数组元素是否可以通过旋转数字转换为 pronic 数

普羅尼克數也稱為矩形數,普羅尼克數是兩個連續數字的倍數。我們將得到一個整數數組,我們可以將數字沿任意方向旋轉一定次數以獲得所有組合。對於透過旋轉數字產生的任何組合,如果每個數組元素都可以轉換為普羅尼克數,那麼我們將列印 true,否則列印 false。

Pronic 數字

首先,讓我們先討論質子數:質子數是兩個連續數的乘積。

從數學上來說,如果我們有整數x,它的下一個連續數字是x 1,並讓數字k是它們兩者的乘積,這意味著:k = (x)*(x 1)。 Pronic 數的一些範例是:

  • 0 是 0 和 1 的乘積。

  • 1 是 1 和 2 的乘積。

  • 6 是 2 和 3 的乘積。

-> 12、20、30、42、56、72、90、110、132、156、182、210、240、272 等

範例

假設我們有一個陣列:

{ 21, 65, 227, 204, 2}

輸出:是

說明:

對於第零個索引:21,旋轉一圈後可以轉換為 12,即 3 和 4 的乘積,因此是一個普朗克數。

對於第一個索引:65,經過一次旋轉可以轉換為 56,即 7 和 8 的乘積,因此是一個普洛尼克數。

對於第二個索引:227,旋轉一圈後可以轉換為272,這是一個pronic數。

類似地,204 到 420 以及 2 本身就是一個質子數。

方法

我們已經看到了程式碼範例,現在讓我們進入步驟 -

  • 首先,我們將定義一個函數來旋轉給定的數字。一個整數將作為參數傳遞,並將被轉換為字串。

  • 使用 substring 方法,我們將字串向右旋轉,然後再次轉換回數字並返回。

  • 我們將定義 pronic 函數來檢查目前數字是否為 pronic。

  • 我們將找到當前數字的平方根的下限,並將其與其連續數字相乘,以確定當前數字是否為質子。

  • 我們將定義一個函數,透過將目前數字轉換為字串來找出目前數字的位數。

  • 在主函數中,我們將遍歷數組,對於每個元素,我們將對其長度進行旋轉,或直到找到 Pronic 數。

  • 如果我們在所有迭代後發現任何不是 pronic 的數字,並且我們無法將其轉換為 pronic 數字,那麼我們將不列印 yes。

範例

在下面的範例中,我們檢查是否所有陣列元素都可以透過旋轉數字轉換為普羅尼克數。下面給出了輸入和預期輸出。

輸入:陣列 = [21, 65, 227, 204, 2]

預期輸出:是

// function to rotate the digits
function rotate(num){

   // converting integer to string
   var str = num.toString();
   
   // putting first index value to last
   str = str.substring(1) + str.substring(0,1);
   
   // converting back string to integer
   num = parseInt(str);
   return num;
}

// function to check whether current number if pronic number or not
function isPronic(num){

   // getting square root of the current number
   var cur = Math.sqrt(num);
   
   // taking floor of cur
   cur = Math.floor(cur);
   if(cur*(cur+1) == num) {
      return true;
   }
   else {
      return false;
   }
}

// function to find the length of the current integer
function number_length(num){
   var str = num.toString()
   var len = str.length;
   return len;
}

// function to check whether array is pronic or not
function check(arr){
   var len = arr.length;
   for(var i =0; i<len; i++){
      // getting length of the current number
      var cur = number_length(arr[i]);
      while(cur--){
         if(isPronic(arr[i])){
            break;
         }
         arr[i] = rotate(arr[i]);
      }
      if(isPronic(arr[i]) == false){
         return false;
      }
   }
   return true;
}
var arr = [21, 65, 227, 204, 2]
console.log("Array:", JSON.stringify(arr))
if(check(arr)){
   console.log("The elements of array can be converted to pronic numbers.");
}
else{
   console.log("The elements of array can't be converted to pronic numbers.");
}

輸出

Array: [21,65,227,204,2]
The elements of array can be converted to pronic numbers.

時間與空間複雜度

上述程式碼的時間複雜度為O(N),其中N為陣列的大小。在這裡,我們獲得了一個額外的數字大小的對數因子,用於遍歷數組並獲取其平方根,但由於給定整數的最大長度非常小,因此對線性時間複雜度沒有影響。

上述程式碼的空間複雜度是常數或 O(1),因為我們在這裡沒有使用任何額外的空間。

結論

在本教程中,我們實作了一個 JavaScript 程式來尋找天氣,我們只需向左或向右旋轉其數字即可將陣列的每個元素轉換為 pronic 數。我們定義了一些函數來旋轉數字,檢查它們是否是質子,並取得數字的位數。上述程式碼的時間複雜度為O(N),空間複雜度為O(1)。

以上是JavaScript 程式檢查所有陣列元素是否可以透過旋轉數字轉換為 pronic 數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除