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

数値がC++で連続する数値の合計として表現できるかどうかを確認します


ここでは、1つの数値を2つ以上の連続した数値の合計として表すことができるかどうかを確認します。数値が12であるとします。これは3+4+5として表すことができます。

この問題を解決するための直接的で最も簡単な方法があります。数値が2の累乗である場合、いくつかの連続した数値の合計として表すことはできません。留意しなければならない2つの事実があります。

  • 2つの連続する数値の合計が奇数の場合、そのうちの1つは奇数になり、もう1つは偶数になります。
  • 2番目の事実は2 n =2 (n-1) + 2 (n-1)

#include <iostream>
using namespace std;
bool isSumofconsecutiveNumbers(int n) {
   if((n & (n-1)) && n){
      return true;
   } else {
      return false;
   }
}
int main() {
   int num = 36;
   if(isSumofconsecutiveNumbers(num)){
      cout << "Can be represented";
   } else {
      cout << "Cannot be represented";
   }
}

出力

Can be represented

  1. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #

  2. Pythonで素数が2つの素数の合計として表現できるかどうかを確認します

    素数nがあるとします。 nをx+yとして表現できるかどうかを確認する必要があります。ここで、xとyも2つの素数です。 したがって、入力がn =19の場合、19 =17 + 2 のように表現できるため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数isPrime()を定義します。これには数がかかります 数値<=1の場合、 Falseを返す 数値が2と同じ場合、 Trueを返す 数値が偶数の場合、 Falseを返す 範囲3から((数値の平方根)+ 1)の整数部分のiの場合、2ずつ増やします。 数値がiで割り切れる場合、 Falseを返す Tru