AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Primzahl-Check: Javascript > Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Primzahl-Check: Javascript > Delphi

Ein Thema von zecke · begonnen am 7. Sep 2005 · letzter Beitrag vom 24. Mär 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#1

Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 17:32


ich bin auf einen Primzahlcheck gestossen, der erstaunlich schnell überprüft ob eine eingegebene Zahl eine primzahl ist. Gefunden auf Javarea.de. Da ich Java soviel zu tun habe, wie mit dem Bau eines Seekreuzers, frage ich euch, ob mir jemand erläutern kann, welche Rechenoperationen durchgeführt werden. Manches kann ich mir selbst erklären, aber auch nicht mit Sicherheit.

Würde mich freuen über eine Antwort.

Hier der JavaScript-Code:

Code:
<SCRIPT LANGUAGE="JavaScript">
<!--
function calculate(form) {
var num=parseInt(form.number.value);
if (isNaN(num) || num < 0) {
form.result.value=(form.number.value + " ist keine gültige Zahl! ");
}
if (num == 1) {
form.result.value=("1 ist eine Primzahl!");
}
for (var i=2;i<num;i++) {
if (num % i == 0) {
var prime="yes";
form.result.value=(num + " ist keine Primzahl. Sie ist teilbar durch " + i );
break;
}
if (num % i != 0) var prime="no";
}
if (prime == "no") form.result.value=(num + " ist eine Primzahl!");
}
// -->
</SCRIPT>
mfg zecke
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 17:51
Code:
for (var i=2;i<num;i++) {
if (num % i == 0) {
var prime="yes";
form.result.value=(num + " ist keine Primzahl. Sie ist teilbar durch " + i );
break;
}
if (num % i != 0) var prime="no";
}
if (prime == "no") form.result.value=(num + " ist eine Primzahl!");
}
Das ist der interessante Teil, davor werden nur die Variablen initialisiert:
Delphi-Quellcode:
function IsPrime(p:Integer):Boolean;
Var i:Integer;
    isnotPrime:Boolean;
Begin
  If p>1 Then
  Begin
    for i:=2 to p do//p ist die zu testende Zahl, mir ist kein besserer Name eingefallen
  //ich glaube for i:=2 to p div 2 do müsste reichen
    Begin
      IsnotPrime:= (p mod i)=0;
      If IsnotPrime Then
        break;
    end;
    Result:=not IsnotPrime;
  end
  Else
    Result:=false;
end;
//Achja, die sagen 1 ist eine Primzahl, das ist natürlich falsch..
[Edit]Rückgabewert der Funktion eingetragen..
[Edit=2]Deklariation der Variable i vergessen...
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 17:53
- Prüfung, ob die Zahl 1 ist

wenn ja, wird sofort eine positive Rückmeldung rausgegeben

wenn nicht, durchläuft das Programm eine Schleife von 2 bis zu der Zahl (bis zur Wurzel der Zahl reicht vollkommen, da könnte man nochmal Zeit sparen) und bricht ab, wenn die Zahl durch eine Zahl ausser 1 und sich teilbar ist

ganz normales Verfahren
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 18:02
Zitat von ste_ett:
- Prüfung, ob die Zahl 1 ist

wenn ja, wird sofort eine positive Rückmeldung rausgegeben
Wenn dann eine negative...
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 18:12
Nun ob die eins eine Primzahl ist oder nicht, ist ansichtssache und leigt in der Betrachtung des "oder"'s welches die Primzahl an sich definiert. Ist es ein einschliessendes oder ein ausschliessendes (~entweder oder) "oder". Darüber ist man sich nicht im Klaren, manche sagen es ist eine Primzahl manche sagen es ist keine. Hängt eben vom "oder" ab.

Danke schon ein mal für die function. Werde sie nachher ausgiebig benutzen und bearbeiten.
mfg zecke
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 19:05
Eine Primzahl ist als eine Zahl mit genau 2 Teilern definiert... also ist die 1 keine!
Wenn die 1 Primzahl wäre, dann wäre die eindeutigkeit der Primfaktorzerlegung nicht mehr gegeben:
29=3*13=1*3*13=1^10*3*13
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 19:43
Ja, Du hast Recht. Mein (Ex-)Mathelehrer hat Mist erzählt... Der Typ ist unmöglich, er ist nicht nur ein schlechter Pädagoge (nahezu gar keiner) sondern auch nicht so gut in Mathe, erklärt warum er Physik und nicht Mathematik studiert hat (Ja Physik ist auch viel Mathe)



btw: Warum ist die 1 keine Primzahl?

mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 19:57
Für eine wirklich schnelle Primzahlüberprüfung < 2^32 solltest du dir mal diese http://dennishomepage.gugs-cats.dk/IsPrimeChallenge.htm Seite anschauen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 20:26
Danke negaH für den Link, schaue ich mir auch mal an.

@ BenjaminH:

Im Moment habe ich nur mit deinem Code-Schnipsel Probleme. Ich verstehe die Ausgabe nicht ganz, also wo ich dem Rechner quasi sage, dass das Ergebnis prim ist oder nicht. Kannst Du mir da auf die Sprünge helfen, damit ich da eine Ergebnisausgabe hinbekomme?
mfg zecke
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Primzahl-Check: Javascript > Delphi

  Alt 7. Sep 2005, 20:35
Sorry, ich hab oben bei der Funktion den Rückgabewert vergessen gehabt
Du musst einfach diese Funktion mit der Zahl, von der du wissen willst, ob sie Prim ist, als Parameter aufrufen:
Delphi-Quellcode:
b1,b2,b3:Boolean;
b1:=IsPrime(5);
b2:=IsPrime(1);
b3:=IsPrime(5680);
b1 wird danach True, b2 und b3 false sein...
[Edit]Wenn du des mit C&P machst, kopier dir doch nochmal die neueste Version von oben, ich hatte noch die deklariation von i vergessen...
[Edit] Isnotprime wurde auch nicht deklariert..
Benjamin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz