Zum Inhalt wechseln


Foto

Berechnung in SQL

MS SQL

  • Bitte melde dich an um zu Antworten
5 Antworten in diesem Thema

#1 julianvbrunner

julianvbrunner

    Newbie

  • 15 Beiträge

 

Geschrieben 17. Juli 2015 - 09:55

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


#2 NilsK

NilsK

    Expert Member

  • 12.474 Beiträge

 

Geschrieben 17. Juli 2015 - 17:21

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, 17. Juli 2015 - 17:22.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 julianvbrunner

julianvbrunner

    Newbie

  • 15 Beiträge

 

Geschrieben 17. Juli 2015 - 19:39

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, 17. Juli 2015 - 19:40.


#4 NilsK

NilsK

    Expert Member

  • 12.474 Beiträge

 

Geschrieben 18. Juli 2015 - 17:31

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, 18. Juli 2015 - 17:32.

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#5 julianvbrunner

julianvbrunner

    Newbie

  • 15 Beiträge

 

Geschrieben 19. Juli 2015 - 18:54   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


#6 NilsK

NilsK

    Expert Member

  • 12.474 Beiträge

 

Geschrieben 19. Juli 2015 - 19:18

Moin,

 

prima, danke für die Lösung.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!




Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL