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

C++で指定された範囲の階乗数をカウントします


変数が保持する整数値から始まり、たとえば開始から変数の終了までの範囲が与えられます。タスクは、指定された範囲で使用可能な階乗数の総数をカウントすることです。

階乗数とは

数値の階乗は、数値の桁を1で除算しながら、数値の桁を乗算することによって計算されます。これは、記号「!」で示されます。つまり、0!、1!、2!、3!、5!、...です。 、等。 0の階乗!と1!常に1です。

I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2
      factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6

Input − start = 5, end = 600
Output − Count of factorial numbers are 3

説明 −以来、5〜600の範囲の階乗数を持つ3つの数が利用可能です。

Input − start = 1, end = 100
Output − Count of factorial numbers are 5

説明 −以来、5〜600の範囲の階乗数を持つ5つの数が利用可能です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 範囲を入力し、変数startとendに格納します

  • 別の変数「fact」を使用して階乗値を格納し、それを1で初期化し、一時変数「i」を使用して数値数を増やします。

  • ファクトが開始よりも小さい間にループを開始し、ファクトにiを掛け続けて階乗を計算し、さらにiの値をインクリメントし続けます

  • 別のループを開始します。ファクトは終了変数と等しくなく、変数rの値をインクリメントし続け、ファクトをファクト* iに設定し続け、iの値をインクリメントし続けます

  • ここで、階乗数の総数の総数を保持しているrの値を返します

  • 結果を印刷します。

#include <iostream>
using namespace std;
// To count the number of factorials
int factorials(int start, int end){
   // Starting from 1 and find the first factorial number
   // 'fact' greater than or equal to 'start'
   int fact = 1, i = 1;
   while (fact < start){
      fact = fact*i;
      i++;
   }
   // r to count factorial numbers in range start to end
   int r = 0;
   while (fact <= end){
      r++;
      fact = fact*i;
      i++;
   }
   // Return the count of factorials in range
   return r;
}
int main(){
   int start = 5, end = 600;
   cout << "Count of factorial numbers are " << factorials(start, end);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of factorial numbers are 3

  1. C++の階乗後続ゼロ

    ここでは、任意の数の階乗の結果の末尾の0の数を計算する方法を説明します。したがって、n =5の場合、5! =120。末尾の0は1つだけです。20の場合! 20として4つのゼロになります! =2432902008176640000。 最も簡単なアプローチは、階乗を計算して0を数えることです。ただし、このアプローチは、nの値が大きい場合は失敗します。したがって、別のアプローチに従います。素因数が2と5の場合、末尾のゼロがあります。2と5を数えると、結果を得ることができます。そのために、このルールに従います。 末尾の0=factorial(n)の素因​​数の5の数 したがって、末尾の0 =$$

  2. C++で指定された長さの合成数の範囲を検索します

    番号nがあるとします。正の整数の範囲を見つける必要があります。範囲内のすべての数値は合成数であり、範囲の長さはnです。複数の範囲がある場合は、任意の1つの範囲を印刷します。合成数は、1とそれ自体以外の約数が少なくとも1つある数です。 範囲の長さがnであるため、最初の数値がaの場合、他の数値はa + 1、a + 2、…、a + n – 1であり、すべて合成数である必要があります。 x!(xは正の整数)を見ると、xの因数は2、3、4、…、p – 1です。したがって、p! + iには係数iがあるので、p! +私は複合でなければなりません。 p! + 2、p! + 3、…p! + p – 1は、すべて