C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でのみ素数(2、3、5、および7)で構成されるn番目の数値を検索する


この問題では、数値Nが与えられます。私たちのタスクは素数(2、3、5、7)のみで構成されるn番目の数値を見つけることです

素数のみ(2、3、5、7)で構成されるシリーズは、2、3、5、7、22、23、25、27、32、33 ...

問題を理解するために例を見てみましょう

Input: N = 6
Output: 23

ソリューションアプローチ

問題を解決するための簡単なアプローチは、与えられたインデックスで数を見つけることです。つまり、級数の項を見つけることです。このために、級数を観察します。

4つの異なる素数があるので、作成されたシリーズは4桁の記数法として扱うことができます。この記数法では、長さxの4倍の数があります。

今、問題を解決するために、それらが数を作成した長さoの数を見つけるシリーズがあります。次に、N番目の数を数え、必要な数を印刷します。

長さを使用してN番目の数を見つけるには、最初の長さの数(x-1)から数え、次にこのNを数えます。

ソリューションの動作を説明するプログラム

#include <iostream>
#include <math.h>
using namespace std;
void findNthNumber(int n){
   long x = 1;
   long lastNum = 0;
   while (true) {
      long currNum = lastNum + pow(4, x);
      if (lastNum < n && currNum >= n)
         break;
      x++;
      lastNum = currNum;
   }
   for (int i = 1; i <= x; i++) {
      for (long j = 1; j <= 4; j++) {
         if (lastNum + pow(4, x - i) < n)
            lastNum += pow(4, x - i);
         else {
            if (j == 1)
               cout<<"2";
            else if (j == 2)
               cout<<"3";
            else if (j == 3)
               cout<<"5";
            else if (j == 4)
               cout<<"7";
            break;
         }
      }
   }
}
int main(){
   int N = 32;
   cout<<N<<"th number made of prime digits is ";
   findNthNumber(N);
   return 0;
}

出力

32th number made of prime digits is 257

  1. C++で数とその最大素因数の合計を求めます

    正の数nがあり、Nとその最大素因数の合計を見つける必要があるとします。したがって、数値が26の場合、最大素因数は13であるため、合計は26 + 13=39になります。 アプローチは簡単です。最大素因数を見つけて、合計を計算して返すだけです。 例 #include<iostream> #include<cmath> using namespace std; int maxPrimeFact(int n){    int num = n;    int maxPrime = -1;    while (n % 2

  2. C++でのみ0と1の数字を含む1からnまでの整数の数を見つけます

    数nがあるとします。私たちのタスクは、1からnまでの整数の数を見つけることです。これには0と1の数字のみが含まれます。したがって、n =15の場合、出力はになります。数字は1、10、11なので これを解決するために、再帰関数を使用して0と1を使用して整数を作成します。次のコードは、これをよりよく理解するのに役立ちます。 例 #include<iostream> using namespace std; int numberOfValues(int p, int n) {    if (p > n)       return