#php #algorithm #function #logic
#php #алгоритм #функция #Логические
Вопрос:
У меня есть массив чисел от 1 до 100, и мне нужно найти список чисел, применяющих два условия: первая сумма делителей больше самой себя, а второе условие: ни одно подмножество делителей не может суммировать само число, для этого у меня есть php-код
$arrayNumbers = [];
//array numbers 1 - 100
$a = 1;
$b = 100;
for ($n = $a; $n <= $b; $n ) {
$conditionOne = false; // Condition one: sum of the divisors greater than ifself
$conditionTwo = false; // Condition two: No subset of those divisors sums itself
$multiples = [];
$subset = [];
// Get sum of multiples divisors
for ($i = 1; $i < $n; $i ) {
if ($n % $i == 0)
$multiples[]= $i;
}
//Condition one sum of the divisors greater than itself
if (array_sum( $multiples ) > $n)
$conditionOne = true;
foreach ($multiples as $number) {
if ($number % 2 == 0) $subset[]= $number;
}
// Condition tow sum of the divisors greater than itself
if (array_sum($subset) > $n)
$conditionTwo = true;
// If first ondition one match with second condition two
if ($conditionOne amp;amp; $conditionTwo)
$arrayNumbers[] = $n;
}
echo implode('</br>$arrayNumbers );
Правильна ли эта логика php? заранее спасибо.
Комментарии:
1. Да, это выглядит правильно, но это не совсем эффективно. однако $ beerstaps[] должен быть $ arrayNumbers[].
2. Спасибо @Nerdi.org Я отредактировал переменную.