AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Int64 in For-Schleife

Ein Thema von CalganX · begonnen am 13. Nov 2003 · letzter Beitrag vom 13. Nov 2003
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Int64 in For-Schleife

  Alt 13. Nov 2003, 18:04
Hi,
seit langem eröffne ich auch mal wieder einen Thread.

Ich habe folgendes Problem: ich will mal aus Spaß an der Freud' einfach mal alle Primzahlen zwischen 1 und 2^63-1 finden. Also alle im Bereich von Int64. Das Problem ist nun, dass meine Laufvariable in meiner Schleife ein Int64 Wert. Allerdings ist Int64 kein ordinaler Typ.

Welche Möglichkeit gibt es da?
Was mir jetzt direkt in den Kopf käme wäre ein Integer-Wert, der gecastet wird auf den ein Übertrag aufgerechnet werde für alles, was interger bzw. longint nicht mehr kann. Allerdings scheint mir diese Methode etwas sehr umständlich. Deswege frage ich nach einer alternativen Möglichkeit.

Chris
  Mit Zitat antworten Zitat
Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#2

Re: Int64 in For-Schleife

  Alt 13. Nov 2003, 18:14
Wie wärs mit ner While-Schleife?

Hmpf, hätt das nicht ausprobieren sollen, der ist hier schon ne ganze Weile dabei...
Delphi-Quellcode:
var
  i: int64;
begin
  i := 0;
  while i < high(i) do
    inc(i);
  showmessage(inttostr(i));
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Int64 in For-Schleife

  Alt 13. Nov 2003, 18:36
Hi,
danke für den Tipp. Funktioniert soweit ganz gut. Danke.

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Int64 in For-Schleife

  Alt 13. Nov 2003, 18:50
Hi,
allerdings scheint da noch ein paar Fehler drin zu sein. Die folgende Funktion sagt, dass 0 und 1 eine Primzahl ist, allerdings stimmt das ja nicht wirklich und bei 3 hängt er sich auf bzw. braucht etwas sehr lange. Das passiert beim Original nicht.

Delphi-Quellcode:
function isPrime (n: int64): boolean;
var
  i: int64;
begin
  Result := true;
  i := 2;
  while ((i <= n-1) and (bOK)) do begin
    if (n mod i) = 0 then
    begin
      Result := False;
      exit;
    end;
    Application.ProcessMessages;
  end;
end;
Chris
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Int64 in For-Schleife

  Alt 13. Nov 2003, 19:11
Hallo Chakotay1308,

ist Dir bewusst, dass (angenommen Deine Schleife funktioniert, Du hättest ein Inc eingesetzt, etc) Deine BruteForce-Methode etwas mehr Zeit in Anspruch nehmen könnte? Angenommen, Dein Rechner schafft bei konstanter Zeit 2 Milliarden (2^31) Iterationen pro Sekunde (was utopisch ist!) dann würdest Du weitere 4 Milliarden (2^32) Sekunden warten müssen, bis die Abbruchbedingung i >= high(i) erfüllt ist...
gruß, choose
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Int64 in For-Schleife

  Alt 13. Nov 2003, 19:14
Hi,
danke für deinen (versteckten) Hinweis.
Mir ist klar, dass das, was ich da mache ziemlich selbstmörderisch ist (für die, die nicht so gut im Kopfrechnen sind: 4 Milliarden Sekunden sind ungefähr 1111111 Stunden ). Allerdings ist das jetzt erstmal egal. Bei Gelegenheit werde ich mir was besseres Einfallen lassen. Es geht jetzt erstmal darum zu gucken, wie gut der Prozessor das schafft.

Chris
  Mit Zitat antworten Zitat
Antwort Antwort


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:37 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