funkcja javascript

0

Witam, mam problem z następującym zadaniem : Napisz funkcję whatNumber(n), która jako argument przyjmuje liczbę n.
Funkcja ma zwracać informację czy podana liczba n jest liczbą doskonałą, niekompletną czy żadną z tych .

  • liczba jest doskonała - zwróć "doskonała"
  • liczba jest niekompletna - zwróć "niekompletna"
    Jeżeli liczba nie jest ani doskonała, ani niekompletna, zwróć false.
    Liczba doskonała to taka liczba, która jest sumą wszystkich swoich dzielników (mniejszych od niej). Jest to np.
    6 = 3 + 2 + 1
    Liczba niekompletna to taka liczba, która jest większa od sumy wszystkich swoich dzielników. Jest to np. 10
    1+2+5=8 < 10

Tam, gdzie są znaki zapytania mam problem ze sformułowaniem warunków. Proszę o pomoc.


function whatNumber(n) {
    for (i = 1; i <= n ; i++) {
        var statement1 = "";
    
        if (n % i === 0 &&  ???) {
            statement1 = "doskonała"
        }
        }
        if (n % i === 0 && ??? ) {
            statement1 = "niekompletna"
        }
        else {
            statement1 = false
        }
    }
    return result;
}
var n = 6;
console.log(whatNumber(n));
0

Ja bym to tak zrobił:

  1. Funkcja zliczająca wszystkie dzielniki i zwracająca array
  2. Funkcja porównująca podaną liczbę z sumą wartości z tablicy z 1)
0

Ok, mam taką funkcję zliczającą wszystkie dzielniki, ale nie wiem, gdzie zawrzeć 2-gą część tzn. porównanie i jak ją zapisać (dopiero zaczynam, proszę o wyjaśnienie).

function sumDivisors(num){
    var sum = 0;
    for (var i = 1; i <= num; i++){
        if (num % i === 0) {
            sum += i;
        }
    }
    return sum;
}

var num = 6;
console.log (sumDivisors(6));




po dodaniu warunków (co jest źle?)

function sumDivisors(num){
    var sum = 0;
    for (var i = 1; i <= num; i++){
        if (num % i === 0) {
            sum += i;

        }
        if (sum = num) {
            console.log("doskonała");
        }
        else if (num > sum){
            console.log("niekompletna");
        }
        else console.log(false)
    }
}

var num = 28;
console.log (sumDivisors(num));

var num = 10;
console.log (sumDivisors(num));

var num = 0;
console.log (sumDivisors(num));
1
if (sum = num) {

tu powinny być minimum dwa znaki równa się, a najlepiej trzy.

if (sum === num) {
0

A tak w ogóle taka rada/prośba na przyszłość dla @k22 - jak masz jakiś kod HTML/JS to wrzucaj na http://jsfiddle.net. W ten sposób znacznie łatwiej jest udzielić pomocy, nie trzeba podanego przez Ciebie kodu nigdzie kopiować, zapisywać itp., a każdy zainteresowany wchodzi na podany przez Ciebie link i od razu widzi kod w akcji, może także natychmiast nanieść poprawki.

1

@neves: dziękuję za pomoc. @cerrato: będę pamiętać, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1