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
-
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
-
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