Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Javascript priem getal pagina

Pagina: 1
Acties:
  • 651 views

  • Roel911
  • Registratie: Januari 2008
  • Laatst online: 18-08 19:29
Hoi allen, bij de onderstaande code gebeurt er niets zodra er op de knop gedrukt wordt. Weet iemand de fout is? Uiteraard gezocht op zoekmachines, http://www.w3schools.com/ en fora wat het issue kan zijn.

[code=taal]
<!doctype html>
<html><head>

<script>
function main()
{
var i,p,n,r,t;
var buffer=new array();
buffer[0]=2;
p=1000;
t=1;
for(n=3;n<=p;n+=2)
{
r=1;//1 means prime
for(i=0;i<=math.sqrt(n);i++)
{
if (n%buffer[i]==0)
{
r=0;//0 means
break;
}
}
if (r=1)
{
buffer[t]=n;
t++;
}
}
for (n=0;n<=t;n++)
{
document.writeln(buffer[n]);
}

}

</script></head>
<body>
<button onclick="main()">Show primenumbers</button>
</body>
</html>

  • HaTe
  • Registratie: Mei 2007
  • Laatst online: 23-11 06:22

HaTe

haat niet

Array en Math moeten met hoofdletter, dan werkt het bij mij.

WP: ME PUHZ-SW75YAA + ERST30D-VM2ED | Solar: 17x TSM-340-DE06M.08 (5780Wp ~6200kWh), Azimuth 179°, Hellingshoek: 34° | PC specs


  • Roel911
  • Registratie: Januari 2008
  • Laatst online: 18-08 19:29
Bij mij werkt het nu ook, dankjewel!

  • -hopsa-
  • Registratie: Maart 2012
  • Laatst online: 21:59
Priemgetallen?

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Als je in JavaScript een array aanmaakt, dan hoef je daarvoor niet de constructor aan te roepen met het new keyword. De geprefereerde manier is om een zogenaamde array literal te gebruiken, waarmee je creatie en initialisatie inéén vouwt.

Arrays beschikken daarnaast over een methode push om nieuwe items achter op het array aan te schuiven. Je hoeft dus niet zelf een index bij te houden en elke keer op te hogen. Dat is nergens goed voor.

JavaScript heeft verder ook gewoon een boolean type, dus je hoeft niet met nummers te werken en vervolgens te gaan annoteren waar deze voor staan. Gebruik bijvoorbeeld in dit programma een boolean variable met de naam isPrime (en niet een nietszeggende naam zoals r) en alles is meteen duidelijk.

Als je dure berekeningen zoals worteltrekking gaat doen in de conditie van de lus, is het altijd slim om even te kijken of ze enkel afhankelijk zijn van waardes die tijdens de lus constant blijven. Zo ja; til dan de berekening buiten de conditie en gebruik in de conditie enkel de al berekende waarde. Dan hoeft die hele berekening niet elke iteratie van de lus opnieuw gedaan te worden en wordt je programma een stukje sneller.

Wat betreft schermuitvoer: het is het beste om document.write en varianten zoals document.writeln meteen af te leren. Deze vernietigen je huidig ingeladen pagina en hebben een negatieve invloed op de manier hoe browsers het inladen van scripts rangschikken, waardoor laadtijd uiteindelijk langer wordt. Als je persé uitvoer wilt opzetten die in het document terug verschijnt, maak dan een DOM element daarvoor aan en schrijf tekst daar naar toe.

Je huidige programma zou er dan bijvoorbeeld zo uit kunnen komen te zien:


HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html>
  <head>
    <script>
      function main() {
        var
          buffer = [ 2 ],
          p = 1000,
          isPrime,
          n,
          m,
          i;
          
        for( n = 3 ; n <= p ; n += 2 ) {
          isPrime = true;
          
          for( i = 0, m = Math.sqrt( n ) ; i <= m ; ++i ) {
            if ( n % buffer[ i ] === 0 ) {
              isPrime = false;
              break;
            }
          }
          
          if ( isPrime ) {
            buffer.push( n );
          }
        }

        document.body
          .appendChild( document.createElement( "pre" ))
          .appendChild( document.createTextNode( buffer.join( "\n" )));
      }
    </script>
  </head>
  <body>
    <button onclick="main()">Show primenumbers</button>
  </body>
</html>

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zou je voortaan code tags willen gebruiken en onze Quickstart hanteren bij 't openen van een topic? Ik mis namelijk nogal de nodige eigen inzet (zie Quickstart).

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.