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