Jadual Kandungan
Contoh 2
Kaedah 1: Kaedah asal
Contoh: Pelaksanaan C++
Output
Kerumitan masa - O(nsqrt(n)), dengan kerumitan fungsi prime() ialah O(sqrt(n)) dan kerumitan gelung for dalam nthFortunate() ialah O(nsqrt(n)).
Kaedah 2: Ayak Eratosthenes
Kerumitan masa - O(n log(log(n)))
Kesimpulan
Ayak Eratosthenes: Cari semua nombor perdana yang mencapai had tertentu, dan kemudian kira produk dengan nombor perdana seterusnya untuk mencari nombor bertuah.
Rumah pembangunan bahagian belakang C++ Cari nombor bertuah ke-

Cari nombor bertuah ke-

Sep 11, 2023 pm 07:09 PM
kedudukan algoritma nombor bertuah

.

Cari nombor bertuah ke-Sebagai contoh, untuk mengira nombor bertuah ketiga, mula-mula hitung hasil darab 3 nombor perdana pertama (2, 3, 5), iaitu 30. Menambah 2 memberi kita 32, iaitu nombor genap, dan menambah 3 memberi kita 33, iaitu gandaan 3. Integer hingga 6 juga boleh dikecualikan. Menambah 7 memberi kita 37, yang merupakan nombor perdana. Oleh itu, 7 adalah nombor bertuah ketiga.

Nombor bertuah untuk nombor primitif pertama ialah - 3, 5, 7, 13, 23, 17, 19, 23, 37, 61, 67, 61, 71, 47, 107, 59, 61, 109….

Pernyataan Masalah

Diberi nombor n. Cari nombor bertuah ke-.

Contoh 1

Input: n = 3
Salin selepas log masuk
Output: 7
Salin selepas log masuk

Penjelasan

- Produk 3 angka harga pertama -

2  3  5 = 30
30 + 7 = 37, a prime number.
Salin selepas log masuk

Contoh 2

Input: n = 7
Salin selepas log masuk
Output: 19
Salin selepas log masuk

Penjelasan - Produk daripada 7 nombor perdana pertama -

2  3  5  7  11  13  17 = 510510
510510 + 19 = 510529, a prime number.
Salin selepas log masuk

Kaedah 1: Kaedah asal

Cara mudah untuk menyelesaikan masalah ini adalah dengan mengira pn#, hasil darab n nombor perdana pertama, dan kemudian cari perbezaan antara pn# dan nombor perdana seterusnya. Perbezaan yang diperolehi akan menjadi nombor bertuah. pseudokod

procedure prime (num)
   if num <= 1
      ans = TRUE
   end if
   for i = 2 to sqrt(num)
      if i is a factor of num
         ans = false
      end if
   ans = true
end procedure
procedure nthFortunate (n)
   prod = 1
   count = 0
   for i = 2 to count < n
      if i is prime
         prod = prod * i
         count = count + 1
      end if
   nextPrime = prod + 2
   while nextPrime is not prime
      nextPrime = next Prime + 1
   ans = nextPrime - prod
end procedure
Salin selepas log masuk

Contoh: Pelaksanaan C++

Dalam program di bawah, nombor bertuah dikira dengan mengira primitif bagi n nombor perdana pertama dan mencari nombor perdana seterusnya selepas primitif. Nombor bertuah ialah perbezaan antara nombor perdana seterusnya dan nombor primitif.

#include <bits/stdc++.h>
using namespace std;

// Function to find if a number is prime or not
bool prime(unsigned long long int num){
   if (num <= 1)
      return true;
   for (int i = 2; i <= sqrt(num); i++){
      if (num % i == 0)
         return false;
   }
   return true;
}

// Function to find the nth Fortunate number
unsigned long long int nthFortunate(int n){
   long long int prod = 1, count = 0;
   
   // Calculating product/primorial of first n prime numbers
   for (int i = 2; count < n; i++){
      if (prime(i)){
         prod *= i;
         count++;
      }
   }
   
   // Find the next prime greater than the product of n prime numbers
   unsigned long long int nextPrime = prod + 2;
   while (!prime(nextPrime)){
      nextPrime++;
   }
   
   // Fortunate number is the difference between prime and primorial
   unsigned long long int ans = nextPrime - prod;
   return ans;
}
int main(){
   int n = 15;
   cout << n << "th Fortunate number : " << nthFortunate(n);
   return 0;
}
Salin selepas log masuk

Output

15th Fortunate number : 107
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa - O(nsqrt(n)), dengan kerumitan fungsi prime() ialah O(sqrt(n)) dan kerumitan gelung for dalam nthFortunate() ialah O(nsqrt(n)).

Kerumitan ruang - O(1)

Kaedah 2: Ayak Eratosthenes

Ayak Eratosthenes digunakan untuk membawa semua nombor perdana sehingga had, yang memberikan kita nilai MAX. Dalam kaedah ini, kami mencipta tatasusunan boolean yang mengandungi semua entri benar dan menandakan semua indeks bukan perdana sebagai palsu. Kemudian darab n nombor perdana pertama dalam tatasusunan untuk mendapatkan hasil darab n nombor perdana pertama. Kemudian sama dengan kaedah sebelumnya, mulakan pada 2 dan tambah 1 pada produk untuk mendapatkan nombor perdana seterusnya. Perbezaan antara nombor perdana seterusnya dan produk adalah nombor bertuah yang diperlukan.

pseudokod

procedure nthFortunate (n)
   MAX is set
   prime[MAX] = {true}
   prime[0] = false
   prime[1] = false
   for i = 1 to i*i <= MAX
      if prime[i]
         for j = i*i to MAX with j = j + i in each iteration
            prime [j] = false
      end if
   prod = 1
   count = 0
   for i = 2 to count < n
      if prime[i]
         prod = prod * i
         count = count + 1
      end if
   nextPrime = prod + 2
   while nextPrime is not prime
      nextPrime = nextPrime + 1
   ans = nextPrime - prod
end procedure
Salin selepas log masuk

Contoh: Pelaksanaan C++

Dalam program berikut, tatasusunan perdana Boolean bersaiz MAX merekodkan semua nombor perdana sebelum MAX. Yang asal kemudiannya ditemui dengan mendarab n nombor perdana pertama. Kemudian sama dengan kaedah sebelumnya, cari nextPrime. Perbezaan antara nextPrime dan Product ialah nombor bertuah.

#include <bits/stdc++.h>
using namespace std;

// Function to find the nth Fortunate number
unsigned long long int nthFortunate(int n){

   // Setting upper limit for Sieve of Eratosthenes
   const unsigned long long int MAX = 1000000000;
   vector<bool> prime(MAX, true);
   prime[0] = prime[1] = false;
   
   // Sieve of Eratosthenes to find all primes up to MAX
   for (unsigned long long int i = 2; i * i <= MAX; i++){
      if (prime[i]){
      
         // Setting all the multiples of i to false
         for (int j = i * i; j <= MAX; j += i){
            prime[j] = false;
         }
      }
   }
   
   // Find the first n primes and calculate their product
   unsigned long long int prod = 1, count = 0;
   for (unsigned long long int i = 2; count < n; i++){
      if (prime[i]){
         prod *= i;
         count++;
      }
   }
   
   // Find next prime greater than product
   unsigned long long int nextPrime = prod + 2;
   while (!prime[nextPrime])
      nextPrime++;
      
   // Fortunate number is difference between prime and product
   return nextPrime - prod;
}
int main(){
   int n = 25;
   cout << n << "th Fortunate number : " << nthFortunate(n);
   return 0;
}
Salin selepas log masuk

Output

15th Fortunate number : 107
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa - O(n log(log(n)))

Kerumitan ruang - O(MAX)

Kesimpulan

Ringkasnya, nombor bertuah ke-1 boleh didapati dalam dua cara berikut.

Kaedah asas: Cari hasil darab n nombor perdana pertama, dan kira nombor perdana seterusnya berdasarkan hasil darab. Perbezaan antara nombor perdana dan produk ialah nombor bertuah ke-n.

Ayak Eratosthenes: Cari semua nombor perdana yang mencapai had tertentu, dan kemudian kira produk dengan nombor perdana seterusnya untuk mencari nombor bertuah.

Kedua-dua kaedah adalah cekap untuk nilai n yang lebih kecil hanya disebabkan oleh kekangan saiz yang berubah-ubah. Untuk nilai yang lebih besar, penyelesaian yang lebih cekap dan dioptimumkan diperlukan.

Atas ialah kandungan terperinci Cari nombor bertuah ke-. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

CLIP-BEVFormer: Selia secara eksplisit struktur BEVFormer untuk meningkatkan prestasi pengesanan ekor panjang CLIP-BEVFormer: Selia secara eksplisit struktur BEVFormer untuk meningkatkan prestasi pengesanan ekor panjang Mar 26, 2024 pm 12:41 PM

Ditulis di atas & pemahaman peribadi penulis: Pada masa ini, dalam keseluruhan sistem pemanduan autonomi, modul persepsi memainkan peranan penting Hanya selepas kenderaan pemanduan autonomi yang memandu di jalan raya memperoleh keputusan persepsi yang tepat melalui modul persepsi boleh Peraturan hiliran dan. modul kawalan dalam sistem pemanduan autonomi membuat pertimbangan dan keputusan tingkah laku yang tepat pada masanya dan betul. Pada masa ini, kereta dengan fungsi pemanduan autonomi biasanya dilengkapi dengan pelbagai penderia maklumat data termasuk penderia kamera pandangan sekeliling, penderia lidar dan penderia radar gelombang milimeter untuk mengumpul maklumat dalam modaliti yang berbeza untuk mencapai tugas persepsi yang tepat. Algoritma persepsi BEV berdasarkan penglihatan tulen digemari oleh industri kerana kos perkakasannya yang rendah dan penggunaan mudah, dan hasil keluarannya boleh digunakan dengan mudah untuk pelbagai tugas hiliran.

Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Jun 03, 2024 pm 01:25 PM

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Apr 02, 2024 pm 05:36 PM

Lapisan bawah fungsi C++ sort menggunakan isihan gabungan, kerumitannya ialah O(nlogn), dan menyediakan pilihan algoritma pengisihan yang berbeza, termasuk isihan pantas, isihan timbunan dan isihan stabil.

Bagaimana untuk mencari fon telinga wayarles Apple jika ia hilang_Cara untuk mencari fon telinga wayarles Apple Bagaimana untuk mencari fon telinga wayarles Apple jika ia hilang_Cara untuk mencari fon telinga wayarles Apple Mar 23, 2024 am 08:21 AM

1. Mula-mula, kami membuka Apl [Cari] pada telefon mudah alih dan pilih peranti dalam senarai pada antara muka peranti. 2. Kemudian, anda boleh menyemak lokasi dan klik pada laluan untuk menavigasi ke sana.

Bolehkah kecerdasan buatan meramalkan jenayah? Terokai keupayaan CrimeGPT Bolehkah kecerdasan buatan meramalkan jenayah? Terokai keupayaan CrimeGPT Mar 22, 2024 pm 10:10 PM

Konvergensi kecerdasan buatan (AI) dan penguatkuasaan undang-undang membuka kemungkinan baharu untuk pencegahan dan pengesanan jenayah. Keupayaan ramalan kecerdasan buatan digunakan secara meluas dalam sistem seperti CrimeGPT (Teknologi Ramalan Jenayah) untuk meramal aktiviti jenayah. Artikel ini meneroka potensi kecerdasan buatan dalam ramalan jenayah, aplikasi semasanya, cabaran yang dihadapinya dan kemungkinan implikasi etika teknologi tersebut. Kecerdasan Buatan dan Ramalan Jenayah: Asas CrimeGPT menggunakan algoritma pembelajaran mesin untuk menganalisis set data yang besar, mengenal pasti corak yang boleh meramalkan di mana dan bila jenayah mungkin berlaku. Set data ini termasuk statistik jenayah sejarah, maklumat demografi, penunjuk ekonomi, corak cuaca dan banyak lagi. Dengan mengenal pasti trend yang mungkin terlepas oleh penganalisis manusia, kecerdasan buatan boleh memperkasakan agensi penguatkuasaan undang-undang

Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Jun 06, 2024 pm 12:33 PM

01Garis prospek Pada masa ini, sukar untuk mencapai keseimbangan yang sesuai antara kecekapan pengesanan dan hasil pengesanan. Kami telah membangunkan algoritma YOLOv5 yang dipertingkatkan untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi, menggunakan piramid ciri berbilang lapisan, strategi kepala pengesanan berbilang dan modul perhatian hibrid untuk meningkatkan kesan rangkaian pengesanan sasaran dalam imej penderiaan jauh optik. Menurut set data SIMD, peta algoritma baharu adalah 2.2% lebih baik daripada YOLOv5 dan 8.48% lebih baik daripada YOLOX, mencapai keseimbangan yang lebih baik antara hasil pengesanan dan kelajuan. 02 Latar Belakang & Motivasi Dengan perkembangan pesat teknologi penderiaan jauh, imej penderiaan jauh optik resolusi tinggi telah digunakan untuk menggambarkan banyak objek di permukaan bumi, termasuk pesawat, kereta, bangunan, dll. Pengesanan objek dalam tafsiran imej penderiaan jauh

Bagaimana untuk mencari lokasi telefon bimbit pihak lain di Amap - Bagaimana untuk mengesan lokasi telefon bimbit pihak lain di Amap Bagaimana untuk mencari lokasi telefon bimbit pihak lain di Amap - Bagaimana untuk mengesan lokasi telefon bimbit pihak lain di Amap Apr 01, 2024 pm 02:11 PM

1. Klik untuk memasukkan perisian peta Amap pada telefon mudah alih anda. 2. Klik Saya di penjuru kanan sebelah bawah. 3. Klik untuk memasukkan peta keluarga. 4. Klik Cipta Peta Keluarga Saya. 5. Selepas penciptaan berjaya, kod jemputan akan muncul dan boleh dikongsi dengan telefon bimbit lain.

Cara menukar maklumat lokasi dan cara mengubah suai alamat Cara menukar maklumat lokasi dan cara mengubah suai alamat Mar 12, 2024 pm 09:52 PM

Kita semua tahu dengan jelas bahawa Taku APP ialah platform sembang dan sosial yang boleh dipercayai. Kini ia membolehkan semua orang berkawan dalam talian Lagipun, ia boleh mencari maklumat lokasi semasa anda secara automatik dan lebih baik memadankan anda dengan beberapa rakan di bandar yang sama yang rapat antara satu sama lain, supaya semua orang boleh bersembang dengan lebih mudah dan berasa gembira, berkali-kali, untuk mendapatkannya untuk mengetahui lebih ramai rakan di tempat lain, semua orang mempunyai idea untuk mengubah suai alamat mereka, tetapi mereka tidak tahu cara mengubah suai maklumat lokasi mereka, yang sangat sukar, jadi editor tapak ini juga mengumpul beberapa khusus

See all articles