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

C++で数を完全な正方形にするために分割する最小数を見つけます


数Nがあるとします。完全な正方形にするために、Nを除算する最小数を見つける必要があります。したがって、N =50の場合、最小数は2であり、50/2 =25であり、25は完全な正方形です。

数が偶数の異なる因子を持っている場合、その数は完全な平方です。したがって、Nの素因数を見つけ、各素因数のべき乗を見つけようとします。パワーが奇数であるすべての素因数を見つけて乗算します。

#include<iostream>
#include<cmath>
using namespace std;
int findMinimumNumberToDivide(int n) {
   int prime_factor_count = 0, min_divisor = 1;
   while (n%2 == 0) {
      prime_factor_count++;
      n /= 2;
   }
   if (prime_factor_count %2)
   min_divisor *= 2;
   for (int i = 3; i <= sqrt(n); i += 2) {
      prime_factor_count = 0;
      while (n%i == 0) {
         prime_factor_count++;
         n /= i;
      }
      if (prime_factor_count%2)
      min_divisor *= i;
   }
   if (n > 2)
   min_divisor *= n;
   return min_divisor;
}
int main() {
   int n = 108;
   cout << "Minimum number to divide is: " << findMinimumNumberToDivide(n) << endl;
}

出力

Minimum number to divide is: 3

  1. C ++を使用して、数の因数の最小合計を求めます。

    ここでは、与えられた数の因子の最小合計を取得する方法を見ていきます。数が12であると仮定します。これはさまざまな方法で因数分解できます- 12 =12 * 1(12 + 1 =13) 12 =2 * 6(2 + 6 =8) 12 =3 * 4(3 + 4 =7) 12 =2 * 2 * 3(2 + 2 + 3 =7) 最小の合計は7です。数値を取り、最小の因子の合計を見つけようとします。最小の因数分解の合計を取得するには、可能な限り数を因数分解する必要があります。言い換えれば、素因数を足して合計Sを求めようとすると、その合計は最小化されると言えます。 例 #include<

  2. C ++で平方根を見つけずに、数値が完全な平方であるかどうかを確認します

    数が与えられたとすると、その数が完全な正方形であるかどうかを確認する必要があります。平方根演算を使用してチェックすることはしません。 1024という数があるとすると、これは完全な正方形ですが、1000は完全な正方形ではありません。ロジックは単純です。結果を得るには、このアルゴリズムに従う必要があります。 アルゴリズム isPerfectSquare(n)- 入力 −数n 出力 −数値が完全な正方形の場合はtrue、それ以外の場合はfalse begin    for i := 1, i2 ≤ n, increase i by 1:   &nbs