Toon posts:

Priemgetal van JS naar PHP

Pagina: 1
Acties:
  • 340 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste mensen

Heb een probleem om een javascript om te zetten naar een PHP script

Het script bestaat er uit dat je een getal moet ingeven en PHP gaat bekijken als het getal dat ingegeven wordt een priemgetal (alleen deelbaar door 1 en door zichzelf) is of niet!
IK heb deze oef in Javascript gemaakt zie hieronder maar heb wat problemen om deze om te zetten naar PHP:

<script language="JavaScript">
<!--

var getal = parseInt((Math.random()*100)+1)
document.write("Het gekozen getal is : " + getal + "<br>");

aant_deelbare = 0;
for(var teller = 1; teller <=getal; teller++)
{
if((getal%teller)==0)
{
aant_deelbare = aant_deelbare + 1;
}
}

if (aant_deelbare <= 2)
{
document.write("<hr>Dit is een priemgetal<hr>");
}
else
{
document.write("<hr>Dit is GEEN priemgetal<hr>");
}
//-->
</script>

Maar nu moet ik een zelfde soort script maken in php
Als resultaat moet ik krijgen:

$ingegeven getal is een priemgetal OF
$ingegeven getal is geen priemgetal


Weet iemand raad? Kan iemand mij helpen? Iemand een oplossing voor script in gedachte?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Wat lukt niet precies en wat heb je tot nu toe al in php?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik probeer met if lus te werken, maar het lukt mij nie goe

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Bij nader inzien post verwijderd.

Janoz: je hebt volkomen gelijk. Ik zal me voortaan proberen in te houden (* Postman is te behulpzaam)

[ Voor 0% gewijzigd door Postman op 22-09-2002 17:38 . Reden: Post van Janoz ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Hmm, dat vind ik nou jammer... Ik heb namelijk het id dat sky zelf geen ene flikker gedaan heeft. Als dat wel het geval was geweest, dan had ie al lang kunnen zien dat er geen enkel verschil is tussen een if in javascript en een if in php. Sterker nog, alleen de document.write zou vervangen moeten worden door echo.

Ik heb daarom zelfs het vermoeden dat sky niet eens zelf weet hoe het stukje javascript werkt, in dit ook gewoon maar ergens vandaan gedownload heeft.

Daarnaast heb ik uit het vorige topic kunnen vernemen dat het om PHP oefeningen gaat. Bij oefeningen is het de bedoeling dat je het ZELF doet. Daarnaast heb je in dat geval waarschijnlijk ook iets van een naslag bij de hand waarin vanalles wordt uitgelegd dat je nodig zult hebben bij het maken van deze oefening. Op deze manier leer je er natuurlijk helemaal niks van.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Sorry jongens, maar ik ben een beginner en probeer wat structuur te vinden in het hele programmeergebeuren!
Ik wist niet dat enkel die document.write moet vervangen worden!
IK ga nu eens proberen als ik dit alles ook kan toepassen in de oefeing!

Heel fel bedankt en sorry als ik iets fout heb gedaan :-(

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Er zijn snellere manier om te kijken of iets een priemgetal is.
Om te verifieren of een getal X een priemgetal hoef je alleen maar te kijken of het deelbaar is door alle priemgetallen kleiner dan WORTEL X. Dat betekent dat voor een 32bit getal je alleen de eerste 4000 nog wat priemgetallen hoef te hebben om te bepalen of het een priemgetal is. Scheelt erg veel tijd.

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Als je niet geinteresseerd bent in de delers, maar je wilt alleen weten of een getal een priemgetal is, dan kan je natuurlijk stoppen met zoeken naar delers zodra je er een gevonden hebt.

Als je ook ook niet geinsteresseerd bent in hoe het werkt, dan is het natuurl het efficientste om het door anderen uit te laten zoeken, scheelt nog meer tijd :P

| Toen / Nu


  • tomato
  • Registratie: November 1999
  • Niet online
vgouw schreef op 22 september 2002 @ 17:41:
Om te verifieren of een getal X een priemgetal hoef je alleen maar te kijken of het deelbaar is door alle priemgetallen kleiner dan WORTEL X.
kleiner dan of gelijk aan wortel(x) ;)

</ants>

Verwijderd

Topicstarter
hoe moet ik dan met if vragen om een bepaald getal te controleren met de wortel x?

Verwijderd

sky: misschien is het voor jouw begrip belangrijk om eerst na te denken over hoe je zelf zou proberen te onderzoeken of een getal een priemgetal is, handmatig. Probeer die stappen op te schrijven, en vervolgens na te bouwen.

Proberen een stuk code om te zetten van 1 taal naar een andere zonder dat je begrijpt wat het doet is niet echt de manier om te leren of om een goede oplossing te krijgen.

Verwijderd

Topicstarter
ok ik zal eens proberen een stukje uit te schrijven, helpen jullie dan als het goed of fout is?
alvast merci

  • Treb
  • Registratie: Mei 2000
  • Niet online
Oke, zal je ook een klein stapje op weg proberen te helpen.

- Alle even getallen zijn deelbaar door 2, dus die vallen af (b.v. 4, 6, 14 etc.)
- Getallen die eindigen op een 5 of 0 zijn altijd deelbaar door 5, dus 10, 15, 824225 vallen ook af (5 is natuurlijk wel een priemgetal).
- Maximaal zoeken tot en met wortel X

Zo zijn er nog meer regels om het zoeken te verkleinen.

Taak is dan om te kijken hoe je e.e.a. in elkaar kunt steken.

Gooi het de hele mik een een loop en klaar is kees :)

Verwijderd

Schrijf het anders gewoon in het Nederlands uit, voordat je code begint te schrijven. Een probleem oplossen bestaat namelijk uit 2 stappen:
1) bedenk de oplossingsmethode (een algoritme)
2) zet het algoritme om in code

Als je gewend bent dit soort dingen te doen zal je voor simpele problemen stap 1 en 2 tegelijk kunnen doen, maar voor ingewikkelde problemen is dit toch de beste manier.

Succes :)

Verwijderd

bovenstaand javascriptje is ook een beetje raar opgebouwd. Waarom de teller laten lopen van 1 tot en met het getal. Je weet sowieso dat deze twee getallen een 'hit' opleveren.

Verwijderd

Als je echt grote getallen aan wil kunnen heb je weinig aan truukjes als eindigen op 0 en 5. Je blijft O(2^n) bewerkingen moeten uitvoeren. (en het gaat hier om n = lengte (aantal cijfers) van het getal, NIET het getal zelf, want het getal zelf is NIET de invoergrootte).

Voor de geinteresseerden is er vorige maand bewezen dat dit in ieder geval in O((log n)^12) kan:

http://www.cse.iitk.ac.in/primality.pdf

Erg wiskundig, je bent gewaarschuwd.

Verwijderd

Topicstarter
Beste mensen

Ik heb de oplossing na zoeken zoeken gevonden!

Voor de geinteresseerden:

index.php

<body>
<div align="center">Geef een getal:
<form name="form1" method="post" action="resultaat.php">
<input type=text name="getal" value="<?php echo $getal; ?>" size=6>
</form>
</div>
</body>

en het resultaat.php

<?
$aantal_deelbare = 0;
for ($teller=1; $teller<=($getal); $teller++)
{
if ( ($getal % $teller) == 0)
{
$aantal_deelbare++;
}
}

if ($aantal_deelbare <= 2)
{
echo "<hr>Dit is een priemgetal<hr>";
}
else
{
echo "<hr>Dit is GEEN priemgetal<hr>";
}
?>

Bedankt voor jullie hulp allemaal
sorry voor de overlast :$

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:49
Zet daar voortaan [code] en [php] tags omheen, alsjeblieft...

  • Treb
  • Registratie: Mei 2000
  • Niet online
Verwijderd schreef op 22 september 2002 @ 23:43:
Als je echt grote getallen aan wil kunnen heb je weinig aan truukjes als eindigen op 0 en 5. Je blijft O(2^n) bewerkingen moeten uitvoeren. (en het gaat hier om n = lengte (aantal cijfers) van het getal, NIET het getal zelf, want het getal zelf is NIET de invoergrootte).

Voor de geinteresseerden is er vorige maand bewezen dat dit in ieder geval in O((log n)^12) kan:

http://www.cse.iitk.ac.in/primality.pdf

Erg wiskundig, je bent gewaarschuwd.
Natuurlijk bestaat er een veel beter algoritme, maar het gaat er hier natuurlijk niet om een zwaar wiskundig bewijs.
De tips die door mij en anderen gegeven zijn, waren om e.e.a. een klein beetje te optimaliseren.

En het resultaat mag er wezen zullen we maar zeggen :'(

Wat mij betreft verdient sky61084 de "luie donder" award :)
Pagina: 1