bedinung zahl=ungerade?



  • 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;
    }
    

Anmelden zum Antworten