Skocz do zawartości


Zdjęcie

Tablica wypisująca dzielniki pierwsze liczby


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 blazy11

blazy11
  • Użytkownicy
  • 1 postów

Napisano 28 styczeń 2017 - 20:15

Witam. Dopiero zaczynam swoją przygodę z programowaniem. Piszę stronkę w js-ie. Mam problem z taką funkcją. Chcę wypisać wszystkie pierwsze dzielniki liczby 12,
jednak cały czas w tablicy wypisywane są wszystkie dzielniki 12, nie mogę sobie z tym poradzić. Oto kod

var z = 12;
         var q = new Array();
         var b = new Array();
	
          	for(h=2;h<=z;h++)
					if (z%h==0)
					q.push(h)
                     
            for (i=0;i<=q.length;i++)        
               if (q[i] == 1||2||3||5||7||11||13 )    
                b.push(q[i])
            
                document.write(b)
              

 

 


  • 0


#2 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

Napisano 29 styczeń 2017 - 10:15

Wrzucasz do Q wszystkie dzielniki liczby 12.

Ten if z 1||2||3 bardzo razi w oczy, stąd pozwolę sobie wytłumaczyć co tu się dzieje, bo to nie działa tak jak myślisz że działa:

q[i] zawiera jakąś tam liczbę

1||2||3||5||7||11||13 zwraca zawsze true -> proponuję się zapoznać dokładnie z używaniem operatorów, jeżeli chcesz porównywać z osobna q[i] do każdej z tych liczb:

q[i] === 1 || q[i] === 2 || ... itp

 

Każda z tych liczb do wykonania logicznej operacji OR na nich wpierw zostanie zrzutowana do boola, o ile jest większa o 0 to zwróci true (przynajmniej tak mi się wydaje, niestety nie znam na tyle JS żeby wiedzieć co się na co zrzutuje - jest pełno dziwactw w tym języku)

o ile q[i] > 0 to dana liczba spełnia zatem ww. warunek - tak to jest jak używa się języka słabo typowanego bez porównywania także typów zmiennych.

Jeżeli już chcesz porównywać- używaj === (silnego porównania z typem). W tym wypadku jednak użycie tegoż nie rozwiąże sprawy bo będziesz porównywać liczbę z true co zawsze zwróci false i nic nie doda do listy b.

 

Na moje zapoznaj się z tym algorytmem, sam oceń po co w ogóle używać takich dziwacznych i nieoptymalnych konstrukcji do tak prostego zagadnienia skoro można to zrobić jedną pętlą bez dodatkowych tablic:
http://www.algorytm....a-czynniki.html


  • 0


Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych