Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Liczenie Liczb pierwszych

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

Liczenie Liczb pierwszych

Post 25.11.2007, 10:50:46

Hej
Zbudowałem taki kod programu, niestey nie chodzi poprawnie:

html>
<head>
<script type="text/javascript">

function oblicz()
{
var i=eval(document.forml.i.value);
for(var p=2;i=2;i<=30)
if(i % p==0)
{
alert("To nie jest liczba pierwsza");
return;
}
alert("To jest liczba pierwsza");

}

</script>
</head>
<body>
<h3 align=center>Liczba pierwsza z zakresu od 2 do 30</h3>
<center>
<form name=forml>
Wprowadz liczbę naturalna:
<input type=text size=6 name=i>
<br><br>
<input type=button
value="Sprawdzanie czy liczba jest liczbą pierwszą"
onClick=oblicz()>
</form>
</center>
</body>


</html>

Mam takie pytanie: (czemu sie nie slucha hehe)
1.Nie wiem gdzie wpisać kod, zeby liczyło tylko liczby z przedziału od 2 do 30,a jak bedzie liczba mniejsza od 3, lub wieksza od 30,to by jakis komunikat pokazywało ( probowalem dodac, to wszystko szlak trafia i jak on powinien wyglądać.
2. Dlaczego mi za kazdym razem pokazuje obojetnie jaka liczbe wpisze, ze jest liczba piierwsza. Wpisuje 1,3 czy 5 i tez tak sie dzieje, dlaczego?
3. Czy powinien stworzyc dwie funkcje, jedna sprawdzajaca czy liczba jest w zakresie, a dopiero potem czy jest liczba pierwsza, czy mozna to zagniezdzic, tak te próbowałem...

Pozdrawiam
Łukasz
javka
Posty: 9
Dołączył(a): 25.11.2007

Post 25.11.2007, 11:27:29

1.Nie wiem gdzie wpisać kod, zeby liczyło tylko liczby z przedziału od 2 do 30,a jak bedzie liczba mniejsza od 3, lub wieksza od 30,to by jakis komunikat pokazywało ( probowalem dodac, to wszystko szlak trafia i jak on powinien wyglądać.

zwykły, prosty IF
Kod: Zaznacz cały
function oblicz(){
var liczba=+document.forml.i.value;
if(liczba<2||liczba>30){
alert('Liczba spoza przedziału');
return;
}
// tu reszta kodu
}


2. Dlaczego mi za kazdym razem pokazuje obojetnie jaka liczbe wpisze, ze jest liczba piierwsza. Wpisuje 1,3 czy 5 i tez tak sie dzieje, dlaczego?

Bo w ogóle ta pętla jest jakaś dziwna. Nadpisujesz liczbę odczytaną z formularza przez wartość 2 (patrz:
Kod: Zaznacz cały
i=2

Nigdzie nie zwiększasz wartości p
Warunek zakończenia pętli też jest niepoprawny
3. Czy powinien stworzyc dwie funkcje, jedna sprawdzajaca czy liczba jest w zakresie, a dopiero potem czy jest liczba pierwsza, czy mozna to zagniezdzic, tak te próbowałem...

można wszystko w jednej funkcji zrobić

IMO tak to powinno wyglądać (nie testowałem, ale na logikę powinno działać)
Kod: Zaznacz cały
function pierwsza(liczba){
if(liczba<2||liczba>30){
alert('Liczba spoza dozwolonego przedziału [2-30]');
return;
}
for(var p=2;p<liczba;p++){
if(liczba%p==0){
alert('NIE pierwsza');
return false;
}
}
alert('PIERWSZA');
return true;
}
pierwsza(6);
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19764
Dołączył(a): 14.04.2002

Liczenie Liczb pierwszych

Post 25.11.2007, 13:47:29

Program po korekcie działa, nawet prawidłowo :) ,z tym że nie wiem gdzie w tym kodzie wstawić znacznik odnoszacy sie do styłow w css-ie. Program wyglada tak, nie przechodzi walidacji swoja droga, jeszcze to mi zostało i bedzie si:

<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
<meta http-equiv="Content-type" content="application/xhtml+xml; charset=iso-8859-2"/>
<meta name="Description" content=" Liczby pierwsze "/>
<meta name="Keywords" content=" liczby pierwsze "/>

<meta name="Generator" content="kED"/>

<title> Liczby pierwsze z przedziału od 2 do 30</title>

<script type="text/javascript">

function lpierwsza(i)
{
var i=+document.forml.i.value;
if(i<2||i>30)
{
alert('Liczba spoza dozwolonego przedziału,2 do 30');
return;
}
for(var p=2;p<i;p++)
{
if(i%p==0)
{
alert('To nie jest liczba pierwsza');
return false;
}
}
alert('To jest liczba pierwsza');
return true;
}

</script>
</head>

<body>

<h2 align=center>Liczba pierwsza z zakresu od 2 do 30</h2>
<center>
<form name=forml>
Wprowadz liczbę naturalna:
<input type=text size=4 name=i>
<br/>
<input type=button
value="Sprawdz, czy podana liczba jest liczba pierwsza"
onClick=lpierwsza()>
</form>
</center>


</body>

</html>

1.Teraz gdzie mam "połozyć" to:<style type="text/css">. Dawałem to zaraz po <body>, bo tam mam css zdefiniowane, ale nie chce zaskoczyć w tym momencie, no i gdzie ten zamykajcy </style> umieścić?
2.I takie pytanie jeszcze , co oznacza ten"+" w kodzie var i=+document.forml.i.value;

Programuje od paru dni w jave, stad te śmieszne pytania :)
javka
Posty: 9
Dołączył(a): 25.11.2007

Post 25.11.2007, 13:56:50

2.I takie pytanie jeszcze , co oznacza ten"+" w kodzie var i=+document.forml.i.value;

Niejawna konwersja typu String na typ Number (to co odczytujesz z pola tekstowego formularza jest Stringiem. Żeby operować na liczbach musisz dokonać konwersji. eval() - zapamiętaj to sobie - to zło i kiepskie rozwiązanie.
Programuje od paru dni w jave, stad te śmieszne pytania :)

Między Javą i JavaScriptem jest ogromna różnica. Także proszę uważać na słowa ;-)
1.Teraz gdzie mam "połozyć" to:<style type="text/css">
o jakim <style> mowa? W tym kodzie nie podałeś nigdzie znacznika <style>. Ogólnie arkusze stylów wrzuca się pomiędzy <head> a </head>. To samo z <script>
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19764
Dołączył(a): 14.04.2002


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 51441 zarejestrowanych użytkowników.
Najnowszy użytkownik: jonman65


Nasi użytkownicy napisali:

  • 937643 wiadomości
  • w 247399 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)