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

xとx+1がC++で同じ数の約数を持つ範囲(1、N)の整数xの数を見つけます


整数Nがあるとすると、整数1

これを解決するために、N未満のすべての数の約数を見つけて、それらを配列に格納します。次に、ループを実行して、x+1が同じ数の正の約数を持つようにxとなる整数xの数を数えます。

#include<iostream>
#include<cmath>
#define N 100005
using namespace std;
int table[N], pre[N];
void findPositiveDivisor() {
   for (int i = 1; i < N; i++) {
      for (int j = 1; j * j <= i; j++) {
         if (i % j == 0) {
            if (j * j == i)
               table[i]++;
            else
               table[i] += 2;
         }
      }
   }
   int ans = 0;
   for (int i = 2; i < N; i++) {
      if (table[i] == table[i - 1])
      ans++;
      pre[i] = ans;
   }
}
int main() {
   findPositiveDivisor();
   int n = 15;
   cout << "Number of integers: " << pre[n] << endl;
}

出力

Number of integers: 2

  1. C++を使用してサッカーの五角形と六角形の数を見つける

    ご存知のように、五角形と六角形はサッカーの重要な部分です。これらの形状は、完全な球形を形成するためのパズルのように組み合わされます。ですから、ここにサッカーがあり、六角形と五角形を見つける必要があります。 問題を簡単に解決するためにオイラー標数を使用します。オイラー標数は、位相空間の特定の形状または構造を記述するために機能する数値です。したがって、サッカーの五角形と六角形の数を計算するために使用できます。 オイラー標数- chi(S) −比表面積Sの整数 F −顔 G −グラフ V −頂点 E −エッジはSに埋め込まれています。 V - E + F

  2. C++で数字dを含む番号を検索します

    数字dと上限nがあるとします。 0からnの範囲のdを含むすべての数値を見つける必要があります。したがって、n =20で、桁が3の場合、数値は[3、13]になります。 この問題を解決するために、すべての数値を文字列として受け取り、文字列に数字が含まれている場合は数値が出力され、そうでない場合は無視されます。 例 #include<iostream> using namespace std; int getAllNumWithDigit(int n, int d) {    string str = "";    str +