Maison > développement back-end > C++ > Séquence de Smarandache-Welin

Séquence de Smarandache-Welin

王林
Libérer: 2023-09-09 11:45:03
avant
853 Les gens l'ont consulté

Séquence de Smarandache-Welin

Ce problème consiste à imprimer les m premiers termes de la séquence de Smarandache-Wellin, où m est tout entier positif. Nous verrons en C++ un algorithme pour imprimer les m premiers termes d'une séquence de Smarandache-Wellin. Mais avant cela, il faut comprendre la séquence de Smarandache-Wellin.

Une Séquence de Smarandache-Wellin est une séquence composée de nombres de Smarandache-Wellin. Les nombres de Smarandache-Wellin sont des nombres entiers formés par concaténation de nombres premiers consécutifs. Les premiers nombres premiers sont 2, 3, 5, 7, 11, 13, 17, 19, 23….

  • Le premier nombre de Smarandache-Wellin de la séquence est 2.

  • Le deuxième nombre de la séquence est 23, qui est formé en reliant les deux premiers nombres premiers consécutifs.

  • Le troisième nombre de la séquence est 235, dont on peut dire qu'il est formé en reliant les trois premiers nombres premiers consécutifs.

De même, nous pouvons conclure que le m-ème terme de la séquence de Smarandache-Wellin est la connexion des m premiers nombres premiers consécutifs. Supposons que nous voulions le 6ème nombre de Smarandache-Wellin, alors ce sera la concaténation des 6 premiers nombres consécutifs, soit 23571113.

Dans le problème ci-dessus, nous recevrons un entier positif N, et notre tâche est d'imprimer les N premiers nombres de Smarandache-Wellin de la séquence de Smarandache-Wellin. Par exemple,

ENTRÉE : N=4

Sortie : 2 23 235 2357

Explication : Ce sont les quatre premiers nombres de la séquence de Smarandache-Wellin formés respectivement par les quatre premiers nombres premiers consécutifs.

Entrée : N=7

Sortie : 2 23 235 2357 235711 23571113 2357111317

Explication : Le i-ème élément de la séquence de Smarandache-Wellin est la connexion des i premiers nombres premiers consécutifs, où i est supérieur ou égal à 1 et inférieur ou égal à 7.

Algorithme

Cette méthode est peut-être aussi simple qu'elle en a l'air. On sait que le Nième terme de la séquence de Smarandache-Wellin est la connexion des N premiers nombres premiers consécutifs.

Ainsi, trouver les N premiers nombres premiers consécutifs nous donnera les N premiers nombres de Smarandache-Wellin de la séquence de Smarandache-Wellin, en concaténant davantage les I nombres premiers consécutifs de chaque i-ème terme. Nous pouvons trouver les N premiers nombres premiers en suivant les étapes ci-dessous -

  • Pour stocker le nombre de nombres premiers afin d'obtenir les N premiers nombres premiers consécutifs, nous allons créer une variable.

  • Vérifiez si le nombre est premier en utilisant une boucle jusqu'à ce que le nombre soit égal à N pour obtenir les N premiers nombres premiers. S'il s'agit d'un nombre premier, on augmente le nombre premier de 1.

  • Pour déterminer si un nombre est premier, nous allons parcourir une boucle for, en commençant par i=2, jusqu'à ce que le nombre soit inférieur ou égal à sa racine carrée. Si le nombre est divisible par d’autres nombres, alors il n’est pas premier car les nombres premiers n’ont que deux facteurs, le nombre lui-même et 1.

  • Selon les mathématiques, un nombre composé contient toujours au moins un facteur inférieur à la racine carrée du nombre. Ainsi, pour déterminer si un nombre est premier, nous parcourons simplement jusqu’à la racine carrée du nombre.

De cette façon, en partant de 2 et en vérifiant un par un jusqu'à ce que le nombre de nombres premiers soit égal à N, nous pouvons obtenir les N premiers nombres premiers consécutifs et les stocker dans le tableau.

La tâche suivante du problème est d'imprimer les N premiers éléments de la séquence de Smarandache-Wellin. Cette tâche est très simple. Nous pouvons le faire en utilisant une boucle imbriquée et en itérant sur un tableau qui stocke les N premiers nombres premiers consécutifs. Nous allons parcourir de 0 à la taille du tableau dans une boucle, puis parcourir de 0 à i dans une boucle imbriquée et imprimer tous les nombres premiers jusqu'à i, de cette façon nous pouvons y parvenir pour chaque i-ième élément. d'abord je nombres premiers consécutifs.

Méthode

Nous pouvons obtenir le résultat souhaité en suivant les étapes−

  • Pour vérifier si un nombre est premier, créez une fonction.

  • Créez une autre fonction dans laquelle vous stockez les N premiers nombres premiers dans un tableau et utilisez ce tableau pour concaténer les j premiers nombres premiers consécutifs pour obtenir le jème terme.

  • Déclarez une variable appelée count pour compter le nombre de nombres premiers. Et avant que le nombre soit égal à N, chaque nombre commençant à 2 est vérifié pour voir s'il est premier. S'il s'agit d'un nombre premier, il est stocké dans le tableau que nous avons créé.

  • Pour la concaténation des N premiers nombres premiers requis de chaque terme, nous utiliserons une boucle for imbriquée. C'est ainsi qu'on imprime les N premiers termes de la séquence de Smarandache-Wellin.

Exemple

Code C++ pour résoudre le problème en utilisant l'algorithme ci-dessus -

#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;
}
Copier après la connexion

Sortie

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
Copier après la connexion

Complexité temporelle : O(N*logN), car nous voulons vérifier si chaque nombre est premier jusqu'à N.

Complexité spatiale : O(N), car nous utilisons un tableau de taille N.

Conclusion

Dans cet article, nous avons découvert la séquence de Smarandache-Wellin et les concepts qui la sous-tendent. À l’aide d’algorithmes efficaces, nous avons également vu comment imprimer les N premiers termes d’une séquence de Smarandache-Wellin en C++.

J'espère que vous pourrez clairement comprendre tous les concepts du problème en lisant cet article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal