Rumah > hujung hadapan web > tutorial js > Program JavaScript menyemak sama ada semua elemen tatasusunan boleh ditukar kepada nombor pronik dengan memutar nombor

Program JavaScript menyemak sama ada semua elemen tatasusunan boleh ditukar kepada nombor pronik dengan memutar nombor

PHPz
Lepaskan: 2023-09-17 17:05:02
ke hadapan
1209 orang telah melayarinya

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

Nombor Plonik juga dipanggil nombor segi empat tepat ialah gandaan dua nombor berturut-turut. Kami akan mendapat tatasusunan integer dan kami boleh memutar nombor ke mana-mana arah beberapa kali untuk mendapatkan semua kombinasi. Untuk sebarang kombinasi yang dihasilkan dengan memutar nombor, jika setiap elemen tatasusunan boleh ditukar kepada nombor Plonik, maka kami akan mencetak benar, jika tidak kami akan mencetak palsu.

Nombor Pronik

Pertama, mari kita bincangkan nombor proton: Nombor proton ialah hasil darab dua nombor berturut-turut.

Secara matematik, jika kita mempunyai integer x yang nombor berturut-turutnya ialah x+1, dan biarkan nombor k adalah hasil darab kedua-duanya, ini bermakna: k = (x)*(x+1). Beberapa contoh nombor Pronik ialah:

  • 0 ialah hasil daripada 0 dan 1.

  • 1 ialah produk 1 dan 2.

  • 6 ialah hasil daripada 2 dan 3.

-> 12, 20, 30, 42, 56, 72, 90, 110, 132, 156, 182, 210, 240, 272, dsb.

Contoh

Katakan kita mempunyai tatasusunan:

{ 21, 65, 227, 204, 2}

Output: Ya

Penerangan:

Untuk indeks sifar: 21, satu putaran bertukar kepada 12, iaitu hasil darab 3 dan 4, maka nombor Planck.

Untuk indeks pertama: 65, selepas satu putaran ia boleh ditukar kepada 56, iaitu hasil darab 7 dan 8 dan oleh itu nombor Plonik.

Untuk indeks kedua: 227, ia boleh ditukar kepada 272 selepas satu putaran, iaitu nombor pronik.

Begitu juga, 204 hingga 420 dan 2 itu sendiri adalah nombor proton.

Kaedah

Kami telah melihat contoh kod, sekarang mari kita masuk ke langkah -

  • Pertama, kami akan mentakrifkan fungsi untuk memutar nombor yang diberikan. Integer akan dihantar sebagai hujah dan akan ditukar kepada rentetan.

  • Menggunakan kaedah subrentetan, kami memutarkan rentetan ke kanan dan kemudian menukarnya kembali kepada nombor sekali lagi dan ke belakang.

  • Kami akan mentakrifkan fungsi pronik untuk menyemak sama ada nombor semasa adalah pronik.

  • Kita akan mencari sempadan bawah punca kuasa dua nombor semasa dan mendarabkannya dengan nombor berturut-turut untuk menentukan sama ada nombor semasa ialah proton.

  • Kami akan mentakrifkan fungsi untuk mencari bilangan digit dalam nombor semasa dengan menukarnya kepada rentetan.

  • Dalam fungsi utama kita akan melelar melalui tatasusunan dan untuk setiap elemen kita akan memutarkannya mengikut panjangnya atau sehingga kita menemui nombor Pronik.

  • Jika kami menemui sebarang nombor selepas semua lelaran yang bukan nombor pronik dan kami tidak boleh menukarnya kepada nombor pronik, maka kami tidak akan mencetak ya.

Contoh

Dalam contoh di bawah, kami menyemak sama ada semua elemen tatasusunan boleh ditukar kepada nombor Plonik dengan memutar nombor. Input dan output yang dijangka diberikan di bawah.

Input: tatasusunan = [21, 65, 227, 204, 2]

Output yang dijangkakan: Ya

// 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.");
}
Salin selepas log masuk

Output

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

Kerumitan masa dan ruang

Kerumitan masa kod di atas ialah O(N), dengan N ialah saiz tatasusunan. Di sini kita mendapat faktor logaritma bersaiz nombor tambahan untuk menggelung ke atas tatasusunan dan mengambil punca kuasa duanya, tetapi memandangkan panjang maksimum integer tertentu adalah sangat kecil, tiada kesan pada kerumitan masa linear.

Kerumitan ruang kod di atas adalah malar atau O(1) kerana kami tidak menggunakan sebarang ruang tambahan di sini.

Kesimpulan

Dalam tutorial ini kami telah melaksanakan program JavaScript untuk mencari cuaca dengan menukar setiap elemen tatasusunan kepada nombor pronik hanya dengan memutarkan nombornya ke kiri atau kanan. Kami menentukan beberapa fungsi untuk memutar nombor, menyemak sama ada ia adalah proton dan mendapatkan bilangan digit. Kerumitan masa kod di atas ialah O(N) dan kerumitan ruang ialah O(1).

Atas ialah kandungan terperinci Program JavaScript menyemak sama ada semua elemen tatasusunan boleh ditukar kepada nombor pronik dengan memutar nombor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan