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

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
Link zu diesem Kommentar

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
Link zu diesem Kommentar

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
Link zu diesem Kommentar
  • Beste Lösung

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
Link zu diesem Kommentar
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...