普羅尼克數也稱為矩形數,普羅尼克數是兩個連續數字的倍數。我們將得到一個整數數組,我們可以將數字沿任意方向旋轉一定次數以獲得所有組合。對於透過旋轉數字產生的任何組合,如果每個數組元素都可以轉換為普羅尼克數,那麼我們將列印 true,否則列印 false。
首先,讓我們先討論質子數:質子數是兩個連續數的乘積。
從數學上來說,如果我們有整數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中文網其他相關文章!