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

C++でのk-大まかな数値またはk-ギザギザの数値


このチュートリアルでは、指定された数値が k-roughであるかどうかをチェックするプログラムを作成します。 またはk-jagged 番号かどうか。

最小の素因数が与えられたk以上である数は、k-roughと呼ばれます。 またはk-jagged 番号。

問題を解決するための手順を見てみましょう。

  • 番号を初期化しますn およびk
  • nの因数であるすべての素数を見つけます それらをベクターに保存します。
  • ベクトルから最初の要素を取得し、それを kと比較します nかどうかを確認する k-roughです またはk-jagged 番号かどうか。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
   for (int i = 2; i * i <= n; i++) {
      if (n % i == 0) {
         return false;
      }
   }
   return true;
}
vector<int> getPrimes(int n) {
   vector<int> primes;
   for (int i = 2; i < n; i++) {
      if (n % i == 0 && isPrime(i)) {
         primes.push_back(i);
      }
   }
   return primes;
}
bool isRoughNumber(int n, int k) {
   vector<int> primes = getPrimes(n);
   return primes[0] >= k;
}
int main() {
   int n = 75, k = 3;
   if (isRoughNumber(n, k)) {
      cout << n << " is a " << k << " rough number" << endl;
   }else {
      cout << n << " is not a " << k << " rough number" << endl;
   }
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

75 is a 3 rough number

結論

ベクトルにすべての素数を格納することを避けることができます。そして、 nの最初の素因数を見つけます kと比較してください 目的の出力を取得します。上記と同様のアイデアを実装しますが、スペースと時間の複雑さは少なくなります。

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++での可変数の引数

    場合によっては、事前定義された数のパラメーターの代わりに、可変数の引数、つまりパラメーターを受け取ることができる関数が必要な状況に遭遇することがあります。 C / C ++プログラミング言語はこの状況の解決策を提供し、要件に基づいて可変数のパラメーターを受け入れることができる関数を定義することができます。次の例は、そのような関数の定義を示しています。 int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); } 関数func()の最後の引数は楕円、つまり3つのドット(.

  2. C++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T