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

nがC++でk個の数の積として記述できるかどうかを調べます


数Nがあるとします。別の数kがあります。数がk個の数を使用して表現できるかどうかを確認する必要があります。数値54、k =3とすると、[2、3、9]のような数値が出力されます。表現できない場合は、それを出力します。

これを解決するために、Nのすべての素因数を見つけてベクトルに格納し、1より大きいk個の数を見つけるために、ベクトルのサイズがkより大きいかどうかを確認します。サイズがk未満の場合は、-1を返します。それ以外の場合は、最初のk-1の因数を出力し、最後の因数は残りのすべての数値の積になります。

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
   int getKFactors(int n, int k){
   int i;
   vector<int> vec;
   while(n % 2 == 0){
      vec.push_back(2);
      n = n/2; //reduce n by dividing this by 2
   }
   for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers
      while(n % i == 0){
         n = n/i;
         vec.push_back(i);
      }
   }
   if(n > 2){
      vec.push_back(n);
   }
   if(vec.size() < k){
      cout << "Cannot be represented";
         return -1;
   }
   for (int i=0; i<k-1; i++)
   cout << vec[i] << ", ";
   int prod = 1;
   for (int i=k-1; i<vec.size(); i++)
   prod = prod*vec[i];
   cout << prod << endl;
}
int main() {
   int n = 54, k = 3;
   getKFactors(n, k);
}

出力

2, 3, 9

  1. C++の配列内のすべての素数の積

    いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7

  2. 2つの数値を乗算するC++プログラム

    2つの数値aとbを乗算すると、それらの積が得られます。 aの値はbの値の何倍にも加算され、aとbの積が得られます。 たとえば。 5 * 4 = 20 7 * 8 = 56 9 * 9 = 81 *演算子を使用して2つの数値を乗算するプログラム *演算子を使用して2つの数値を乗算するプログラムは、次のとおりです。- 例 #include <iostream> using namespace std; int main() {    int a = 6, b = 8;    cout<<"Product of "