Rumah > pembangunan bahagian belakang > C++ > Urutan Smarandache-Welin

Urutan Smarandache-Welin

王林
Lepaskan: 2023-09-09 11:45:03
ke hadapan
853 orang telah melayarinya

Urutan Smarandache-Welin

Masalah ini terdiri daripada mencetak sebutan m pertama bagi jujukan Smarandache-Wellin, dengan m ialah sebarang integer positif. Kita akan melihat dalam C++ algoritma untuk mencetak sebutan m pertama bagi jujukan Smarandache-Wellin. Tetapi sebelum itu, kita perlu memahami urutan Smarandache-Wellin.

A Jujukan Smarandache-Wellin ialah jujukan yang terdiri daripada nombor Smarandache-Wellin. Nombor Smarandache-Wellin ialah integer yang dibentuk dengan menggabungkan nombor perdana yang berturutan. Beberapa nombor perdana pertama ialah 2, 3, 5, 7, 11, 13, 17, 19, 23….

  • Nombor Smarandache-Wellin pertama bagi jujukan ialah 2.

  • Nombor kedua dalam jujukan ialah 23, yang dibentuk dengan menyambungkan dua nombor perdana berturut-turut.

  • Nombor ketiga dalam jujukan ialah 235, yang boleh dikatakan terbentuk dengan menyambung tiga nombor perdana berturut-turut.

Begitu juga, kita boleh membuat kesimpulan bahawa sebutan ke-m bagi jujukan Smarandache-Wellin ialah sambungan bagi nombor perdana m berturut-turut yang pertama. Katakan kita mahu nombor Smarandache-Wellin ke-6, maka ia akan menjadi gabungan 6 nombor pertama berturut-turut, iaitu 23571113.

Dalam masalah di atas, kita akan diberi integer positif N, dan tugas kita ialah mencetak nombor N Smarandache-Wellin pertama bagi jujukan Smarandache-Wellin. Contohnya,

INPUT: N=4

Output: 2 23 235 2357

Penjelasan: Ini ialah empat nombor pertama bagi jujukan Smarandache-Wellin yang masing-masing dibentuk oleh empat nombor perdana berturut-turut.

Input: N=7

Output: 2 23 235 2357 235711 23571113 2357111317

Penjelasan: Item ke-i bagi jujukan Smarandache-Wellin ialah sambungan nombor perdana i berturut-turut yang pertama, di mana i lebih besar daripada atau sama dengan 1 dan kurang daripada atau sama dengan 7.

Algoritma

Kaedah ini mungkin semudah yang dilihat. Kita tahu bahawa sebutan N bagi jujukan Smarandache-Wellin ialah sambungan bagi N nombor perdana berturut-turut yang pertama.

Jadi, mencari N perdana berturut-turut yang pertama akan memberi kita nombor N Smarandache-Wellin yang pertama bagi jujukan Smarandache-Wellin, dengan menggabungkan lagi nombor perdana I berturut-turut bagi setiap sebutan ke-i. Kita boleh mencari N nombor perdana pertama dengan mengikuti langkah di bawah -

  • Untuk menyimpan kiraan nombor perdana bagi mendapatkan nombor perdana N pertama berturut-turut, kami akan mencipta pembolehubah.

  • Periksa sama ada nombor itu adalah perdana menggunakan gelung sehingga kiraan sama dengan N untuk mendapatkan N nombor perdana yang pertama. Jika ia nombor perdana, kami menambah kiraan perdana sebanyak 1.

  • Untuk menentukan sama ada sesuatu nombor ialah perdana, kami akan mengulang melalui gelung for, bermula dengan i=2, sehingga nombor itu kurang daripada atau sama dengan punca kuasa duanya. Jika nombor itu boleh dibahagi dengan nombor lain, maka ia bukan perdana kerana nombor perdana hanya mempunyai dua faktor, nombor itu sendiri dan 1.

  • Menurut matematik, nombor komposit sentiasa mengandungi sekurang-kurangnya satu faktor yang kurang daripada punca kuasa dua nombor itu. Jadi, untuk menentukan sama ada sesuatu nombor adalah perdana, kita hanya mengulangi sehingga punca kuasa dua nombor itu.

Dengan cara ini, bermula dari 2 dan menyemak satu persatu sehingga bilangan nombor perdana adalah sama dengan N, kita boleh mendapatkan nombor perdana N pertama berturut-turut dan menyimpannya dalam tatasusunan.

Tugas masalah seterusnya ialah mencetak N item pertama dari urutan Smarandache-Wellin Tugas ini sangat mudah. Kita boleh melakukan ini dengan menggunakan gelung bersarang dan mengulangi tatasusunan yang menyimpan nombor perdana N pertama berturut-turut. Kami akan lelaran daripada 0 kepada saiz tatasusunan dalam gelung dan kemudian lelaran daripada 0 kepada i dalam gelung bersarang dan mencetak semua nombor perdana sehingga i, dengan cara ini kita boleh mencapainya untuk setiap item ke-i Sambungan pertama i nombor perdana berturut-turut.

Kaedah

Kita boleh mendapatkan output yang diingini dengan mengikuti langkah−

  • Untuk menyemak sama ada nombor adalah perdana, buat fungsi.

  • Buat fungsi lain di mana anda menyimpan N prima pertama dalam tatasusunan dan gunakan tatasusunan itu untuk menggabungkan prima j pertama berturut-turut untuk mendapatkan sebutan ke-j.

  • Isytihar pembolehubah yang dipanggil kiraan untuk mengira bilangan nombor perdana. Dan sebelum kiraan sama dengan N, setiap nombor bermula dari 2 diperiksa untuk melihat sama ada ia adalah perdana. Jika ia adalah nombor perdana, ia disimpan dalam tatasusunan yang kami buat.

  • Untuk penyatuan N pertama yang diperlukan nombor perdana bagi setiap sebutan, kami akan menggunakan gelung bersarang untuk. Beginilah cara kami mencetak N sebutan pertama bagi jujukan Smarandache-Wellin.

Contoh

Kod C++ untuk menyelesaikan masalah menggunakan algoritma di atas -

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

//function to check if the number is a prime number or not
bool check(int N){
   for(int i= 2; i <=sqrt(N); i++){ //iterating to check if the number has any divisor other than 1 and number itself
      if(N % i == 0){ //if it has return false since it is not a prime number
         return false;
      }
   }
   return true; //return true if it satisfies all the conditions
}

//function to print first N terms of Smarandache-Wellin sequence
//using an array to store first N consecutive prime numbers
void ans(int N){
   int ans[N];
   int count=0; //to count number of prime numbers
   for(int i=2;count<N;i++){ //for storing first N consecutive prime numbers in the array
      if(check(i)){
         ans[count]=i; //if the number is prime store it in the array
         count++; //increase count
      } else {
         continue;
      }
   }
   cout<<"The first "<<N<<" terms of Smarandache-Wellin sequence are: ";
   for(int i=0;i<N;i++){ //for printing first N terms of Smarandache-Wellin sequence
      for(int a=0;a<=i;a++){ //for concatenating first a prime numbers for ath term
         cout<<ans[a];
      }
      cout<<" ";
   }
   cout<<endl;
}
int main(){
   int N=6;
   ans(N);
   N=12;
   ans(N);
   return 0;
}
Salin selepas log masuk

Output

The first 6 terms of Smarandache-Wellin sequence are: 2 23 235 2357 235711 23571113
The first 12 terms of Smarandache-Wellin sequence are: 2 23 235 2357 235711 23571113 2357111317 235711131719 23571113171923 2357111317192329 235711131719232931 23571113171923293137
Salin selepas log masuk

Kerumitan masa: O(N*logN), kerana kami ingin menyemak sama ada setiap nombor adalah perdana hingga N.

Kerumitan ruang: O(N), kerana kami menggunakan tatasusunan saiz N.

Kesimpulan

Dalam artikel ini, kami belajar tentang jujukan Smarandache-Wellin dan konsep di sebaliknya. Menggunakan algoritma yang cekap, kami juga melihat cara mencetak sebutan N pertama bagi jujukan Smarandache-Wellin dalam C++.

Saya harap anda dapat memahami dengan jelas semua konsep tentang masalah semasa membaca artikel ini.

Atas ialah kandungan terperinci Urutan Smarandache-Welin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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