bedinung zahl=ungerade?
-
-
ja sorry ^^
also das is so, ich versuche ein programm zu schreiben, das mir alle primzahlen zwischen 0 und 100 ausgibt. soweit ich bis jetzt geschrieben habe müsste das eigentlich auch funzen, mein einziges problem ist eben, dass ich net weiss, wie ich dem pc klarmachen soll, dass eine bedinung nur dann erfüllt is, wenn eine bestimmte variable eine ganze zahl ist.
und ich weiss eben net wie ich sone bedingung formulieren soll. eigentlich sowas wie if (variable==ganze zahl) hab auch schon if (variable==integer) probiert

mfg
ps: sorry nochmal, is jetz alles durcheinabder hier +g+
-
athan schrieb:
also das is so, ich versuche ein programm zu schreiben, das mir alle primzahlen zwischen 0 und 100 ausgibt.
primzahlen sind doch sowieso nur 'natürliche zahlen'. von daher brauchste dich gar nicht mit floats herumzuärgern.

-
Äh.
Wenn du z.B. prüfen willst ob das Ergebnis einer Division eine ganze Zahl ist, dann prüfst du das mit dem % Operator (der Ermittelt den Rest der Division):if ((a % b) == 0) { // "a / b" ist eine ganze zahl }Sonst wüsste ich nicht wo man zum Primzahlen Berechnen prüfen müsste ob irgendwas eine ganze Zahl ist, da man nur mit ganzen Zahlen arbeitet.
-
Wenn es ne voll stylische primzahlenberechnung sein soll, dann mach es so.
void prim(int a,int max) { int b=1; switch(a-max) { for(;b<a;b++){ switch(a%b){ case 0: prim(++a,max); return; default: continue; } default: continue; } std::cout<<a<<std::endl; prim(++a,max); case 0: break; } } int main (void) { prim(2,100); return 0; }
-
also ich hatte mir das so gedacht:
eine schleife wird solange ausgeführt, wie die zahl kleiner als 100 ist, und wird mit jedem durchlauf um 1 erhöht. d.h. schonmal, dass ich eine zahl nach der anderen auf primzahlen prüfen will. im schleifenkörper soll dann eine 2. zahl mit der ersten gleichgesetzt werden (sozusagen ein klon). dann kommt eine weitere schleife, die solange ausgeführt wird, wie zahl2 größer als 0 ist (die wird mit jedem durchlauf um 1 verringert). und dann wird zahl mit zahl2 (die ja immer kleiner wird) dividiert. und dann soll ein x immer dann um 1 erhöht werden, wenn das ergebnis eine ganze zahl war!
und dann kann ich sagen, dass die zahl eine primzahl ist, wenn x=2 ist, weil es dann nur 2 zahlen gab, durch die man die zahl teilen konnte (nämlich 1 und sich selbst)!
dann ist der erste schleifenkörper vorbei, die zahl wird um 1 erhöht und das ganze geht wieder von vorne los. das sieht dann so aus:for (zahl=1; zahl<100; ++zahl)
{
zahl2=zahl;
while (zahl2>0)
{
zahl/zahl2=erg;if (erg == ganze zahl)
x=x+1;--zahl2;
}
if (x=2)
printf ("%d", zahl);
printf ("\n");
}und ich würde das gerne SO lösen
dass ihr das mit links macht, is mir klar, aber ich weiss, dass mein programm funzen würde, wenn ich nur wüsste, wie man diese eine (kursive^^) bedingung da formuliert!
-
steht doch schon da
-
hustbaer schrieb:
(...)Sonst wüsste ich nicht wo man zum Primzahlen Berechnen prüfen müsste ob irgendwas eine ganze Zahl ist, da man nur mit ganzen Zahlen arbeitet.
wollte nur erlären warum ich auf ganze zahlen prüfen will

-
außerdem hilft mir das leider immernochnet weiter.
wenn du dir ma meinen quelltext ansiehst, kannste sehen, dass dein vorschlag da nicht reinpasst
ich will doch einfach nur (erg=ganze zahl?!) formulieren, geht das denn nicht??
-
klar geht das, wurd ja auch schon mehr als einmal erwähnt

if(zahl % 2) // rest == 1: ungerade else // rest == 0: gerade
-
ich rede aber schon lange netmehr von gerade und ungerade

-
athan schrieb:
ich rede aber schon lange netmehr von gerade und ungerade

thordk lebt noch in der Steinzeit ...
-
Wie es mit "ganze zahl" geht wurde auch schon gesagt.

-
a%n=erg -> liefert den rest wenn man a/n teilt if(erg==0) -> ist der rest 0, ist n ein teiler von a Primzahltest: bool IsPrime(int a) { for(int n=2;n<=sqrt(a);n++) { if(a%n==0) return false; } return true; }