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