Jump to content

Berechnung in SQL


Direkt zur Lösung Gelöst von julianvbrunner,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Ich versuche momentan in SQL einen Weg zu finden Primzahlen zwischen 2 und 100 zu errechnen, meine Query funktioniert aber tut leider nicht das was sie soll. :D

Hier ist sie:

declare

@Ende as integer= 100,
@Dz as integer =1,
@Hilfe as integer=1
declare
@Ergebnis as float = 1
select @dz
while (@Dz<=@Ende)
Begin 
set @dz=@dz+1
 
 
while (@Hilfe<=@dz/2)
Begin
set @ergebnis = @dz/@hilfe
set @Hilfe=@Hilfe+1
if (@Ergebnis like '%,%')
select @dz
End
End
 
Eventuell findet jemand von euch meinen denkfehler?
Ich danke im Vorraus
 
Mfg
 
 
Julianvbrunner
Geschrieben (bearbeitet)

Moin,

 

interessanter Ansatz ...

 

Wenn ich nicht ganz falsch liege, müsstest du für den LIKE-Vergleich die Variable in einen String konvertieren.

Vielleicht wäre es aber einfacher, den Ergebniswert mit dem Integer des Ergebnisses zu vergleichen. Auch nicht gerade elegant, aber einen Stringvergleich finde ich hier schon sehr krude.

 

Gruß, Nils

bearbeitet von NilsK
Geschrieben (bearbeitet)

Ich habe die Query noch etwas ausgebaut und verbessert, komme aber immer noch nicht zum gewünschtem Ergebnis.

Ich nehme gerne Verbesserungsvorschläge entgegen und versuche diese umzusetzen.

 

declare
@t float=0,
@Start float=0,
@Teiler float=0,
@s float= 0
 
while(@Start<=100)
Begin
set @Start= @Start+1
while(@Teiler<@Start)
begin
set @Teiler=@Teiler+1
set @t=@Start/@Teiler
select CAST (@t as varchar(25))
 
if(@t not like '%.%')                        \\Ich vermute aufgrund dieser Stelle bekomme ich das Gewünschte Ergebnis nicht
begin
set @Teiler=2000
end
end
if(@Teiler>1500)
begin
select @Start
end
end
bearbeitet von julianvbrunner
Geschrieben (bearbeitet)

Moin,

 

dann vermutest du ja dasselbe wie ich. Wie wäre es, wenn du die Stelle änderst? :rolleyes:

Mit deinem CAST-Statement gibst du den Wert ja nur per SELECT aus, aber du weist ihn keiner Variablen zu.

 

Gruß, Nils

bearbeitet von NilsK
  • Beste Lösung
Geschrieben

Habe es doch noch hinbekommen, falls jemanden die Lösung interessiert oder sie vielleicht auch mal irgendwann braucht, hier ist sie.

 

declare
@Ergebnis int=0,
@Start int=2,
@Teiler int=2
 
while(@Start<=100)
Begin
set @Start= @Start+1
set @Teiler= 2
while(@Teiler<@Start)
begin
set @Ergebnis=@Start%@Teiler
set @Teiler=@Teiler+1
 
if(@Ergebnis=0)
begin
set @Teiler=2000
break
end
 
end
 
if(@Teiler<1500 )
begin
select @Start, ' Ist eine Primzahl'
end
end
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...