C++でのエマープ番号
エマープ numberは特殊なタイプの数であり、その数字を逆にすると別の素数が作成されます(この素数は元の素数とは異なります)。
エマープは素数の逆です。
エマープではないいくつかの素数は、回文素数と1桁の素数です。
いくつかのエマープ番号 13、17、37、733です。
n未満のすべてのエマープ数を出力するプログラム。
ここでは、番号nが与えられており、すべてのemirp番号を出力する必要があります。 n以下。
問題を理解するために例を見てみましょう
入力: n =40
出力: 13、17、31、37
ソリューションアプローチ
指定された数よりも小さいすべてのエマープ数を見つけるには、n未満のすべての素数を見つけてから、その桁を逆にして形成された数がエマープ数よりも素数であるかどうかを確認し、印刷する必要があります。
nまでの素数を見つけて、その逆桁を再確認するには、エラトステネスのふるいを使用するのが最善の方法です。
ソリューションの動作を説明するプログラム
例
#include <bits/stdc++.h> using namespace std; int reverseDigits(int x) { int digitRev = 0; while (x > 0) { digitRev = (digitRev*10) + x%10; x = x/10; } return digitRev; } void findAllEmirpNumber(int n) { bool primeNo[10001]; memset(primeNo, true, sizeof(primeNo)); for (int p=2; p*p<=10001; p++) { if (primeNo[p] == true) { for (int i=p*2; i<=10001; i += p) primeNo[i] = false; } } for (int p=2; p<=n; p++) { if (primeNo[p]) { int revNo = reverseDigits(p); if (p != revNo && primeNo[revNo]) { cout<<p<<"\t"; if(revNo <= n) cout<<revNo<<"\t"; primeNo[revNo] = false; } } } } int main() { int n = 40; cout<<"All Emirp numbers less than or equal to "<<n<<" are\n"; findAllEmirpNumber(n); return 0; }
出力
All Emirp numbers less than or equal to 40 are 13 31 17 37
-
C++五胞体数
五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと
-
C++でのデュードニー番号
与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。