julianvbrunner 0 Geschrieben 17. Juli 2015 Melden Teilen Geschrieben 17. Juli 2015 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. Juli 2015 Melden Teilen Geschrieben 17. Juli 2015 (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 17. Juli 2015 von NilsK Zitieren Link zu diesem Kommentar
julianvbrunner 0 Geschrieben 17. Juli 2015 Autor Melden Teilen Geschrieben 17. Juli 2015 (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 17. Juli 2015 von julianvbrunner Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 18. Juli 2015 Melden Teilen Geschrieben 18. Juli 2015 (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 18. Juli 2015 von NilsK Zitieren Link zu diesem Kommentar
Beste Lösung julianvbrunner 0 Geschrieben 19. Juli 2015 Autor Beste Lösung Melden Teilen Geschrieben 19. Juli 2015 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 19. Juli 2015 Melden Teilen Geschrieben 19. Juli 2015 Moin, prima, danke für die Lösung. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.