普羅尼克數也稱為矩形數,普羅尼克數是兩個連續數字的倍數。我們將得到一個整數數組,我們可以將數字沿任意方向旋轉一定次數以獲得所有組合。對于通過旋轉數字產生的任何組合,如果每個數組元素都可以轉換為普羅尼克數,那么我們將打印 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 數的詳細內容,更多請關注www.92cms.cn其它相關文章!