Hallo,
Bitte verwende die Delphi-Code Tags wenn du Delphi-Code schreibst - das erhöht die Leserlichkeit wesentlich!
Zitat von
tommy_mey:
Sorry, wegen dem Stil - könnt ihr mir den Code dazu machen, ich hab versucht es mit
Ne, wir können dir Tips geben wo du weiterkommst, deine Hausaufgaben lösen wir dir aber nicht. Ist schon ziemlich knapp kalkuliert sich am 24. anzumelden um bis zum 26. eine Lösung serviert zu bekommen
Der Vorschlag von Toxman funktioniert schon, man könnte etwas der Art
sqrt(zz[i]) - trunc(sqrt(zz[i])) <= 0.001
testen. Zu deinem Code-Schnipsel:
Delphi-Quellcode:
function ist_quadratzahl(x: integer): boolean;
begin
result := sqrt(x) - trunc(sqrt(x)) <= 0.001;
end;
// ...
pos := 0;
for i:=1 to max do
begin
if not ist_quadratzahl(zz[i]) then
begin
inc(pos);
hilfs2[pos] := zz[i];
end;
end;
Damit sollten dann in hilfs2 alle nicht Quadratzahl enthalten seien (insgesammt pos Stück). Für die Primzahlen schreibst du einfach eine Funktion ist_primzahl die TRUE zurückgibt wenn es eine ist, ansonsten FALSE und verwendest die mit der gleichen Schleife wie oben.
Wie die ist_primzahl FUnktion aussehen mußt du dir noch ausdenken... könnte man ja mal anwenden was man so aus Mathe weiß, daß eine Primzahl nur durch 1 und durch sich selbst ohne Rest teilbar ist...