Получить все подмножества данного делителя числа и проверить, не нарушают ли они условия

Вам нужно объявить методы app.use до объявления маршрутов.

См. express docs

Из документов:

Функции промежуточного программного обеспечения выполняются последовательно, поэтому очень важно учитывать включение промежуточного программного обеспечения.

0
задан Patrik Alexits 19 January 2019 в 15:08
поделиться

2 ответа

Я сделал это до сих пор, который охватывает первые два шага, которые я намеревался сделать. Последний шаг мне неизвестен, но у меня есть решение и для этого.

Это мой код:

<script type="text/javascript">
  function getDivisors(n){
    var divisors=new Array();

    for(var x=1;x<n;x++){
      if(n%x==0) divisors.push(x);
    }
    return divisors;
  }


  function getNumbers(n){
    var numbers=new Array(),
    sum=0;

    for(var x=1;x<=n;x++){
      sum=getDivisors(x).reduce((a, b) => a + b, 0);
      if(sum>x) numbers.push(x);
      // console.log("Number: "+x+" sum:"+sum);
    }
    return numbers;
  }

  var remainingNumbers = getNumbers(1000);
  console.log(remainingNumbers);

</script>

Это ответ на вопрос:

var out = document.getElementById('outLine');
out.innerHTML += "X\t»\tSUM\tSUM-X\tLIST\r\n";
function isSubsetSum(set, n, sum)  { 
	if (sum == 0) { return true; }
	if (n == 0 && sum != 0) { return false; }
	if (set[n - 1] > sum) { return isSubsetSum(set, n - 1, sum); }
	return isSubsetSum(set, n - 1, sum) ||
		isSubsetSum(set, n - 1, sum - set[n - 1]); 
} 
function v1chNum(x) {
	var r = [1];
	var n = 0;
	var m = x/2;
	for(var i = 2; i <= m; i++ ) {
		if(x%i==0) {
			if(r.indexOf(i)==-1) {
				r.push(i);
				n += i;
			}
			m = x/i;
			if(r.indexOf(m)==-1) {
				r.push(m);
				n += m;
			}
		}
	}
	if( n > x ) {
		r.sort(function(a, b) {return b - a;});
		if(!isSubsetSum(r,r.length,x)) {
			out.innerHTML += x+"\t»\t"+n+"\t"+(n-x)+"\t"+r+"\r\n";
		} else { return false; }
	} else { return false; }
}
for(var x = 1; x<1000; x++) {
	v1chNum(x);
}
<pre id="outLine"></pre>
[ 1110]

0
ответ дан Patrik Alexits 19 January 2019 в 15:08
поделиться

Подход PHP:

$empList = [];

        for ($emp = 1; $emp <= 100; $emp++) {

            $multiples = [];
            $subset = [];
            $cond1 = false;
            $cond2 = false;

            // Get multiples.
            for ($i = 1; $i < $emp; $i++) {
                if ($emp % $i == 0) $multiples[]= $i;
            }

            // Condition 1
            if (array_sum($multiples) > $emp) $cond1 = true;


            foreach ($multiples as $num) {
                if ($num % 2 == 0) $subset[]= $num;
            }

            // Condition 2
            if (array_sum($subset) > $emp) $cond2 = true;

            if ($cond1 && $cond2) $empList[] = $emp;
        }

        echo "<pre>";
        var_dump($empList);
        echo "</pre>";

Вывод:

Array
(
    [0] => 24
    [1] => 36
    [2] => 40
    [3] => 48
    [4] => 60
    [5] => 72
    [6] => 80
    [7] => 84
    [8] => 96
)
0
ответ дан Bautista Vigier 19 January 2019 в 15:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: