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