Phythagoraeische Tripel (Optimierung gesucht)



  • Hallo!

    Meine Aufgabe ist einfach, ich zitiere: "Schreiben Sie ein Programm, welches durch reines Probieren alle pythagoräischen Tripel bis zu einer oberen Grenze N findet."

    Dazu soll man eben 3 ineinander geschachtelte for-Schleifen verwenden.

    Hier also meine 3 Schleifen:

    int a;
      int b=1;
      int c;
      int i = 1;
      int m = 1;
      int p = 1;
    
     for(i=1; i<=m; i ++){
       a = i*i;
    
       for(m=1; m<=p; m ++){
        if (a!= b)
         b = m*m;   
    
        for(p=1; p<=N; p ++){
         c = p*p;
    
         if(c == (a + b))
    

    Aber es kommt mir so vor, als wäre meine Lösung ziemlich dilettantisch.

    Wüsste jemand eine elegantere Lösung? Die 3 Schleifen müssen dabei aber erhalten bleiben.



  • Hallo MeWe,

    das Thema hatten wir neulich hier ausführlicher behandelt.

    Einen guten Rutsch
    Knecht



  • unsigned pyt(unsigned limit)
    {
    	unsigned found = 0;
    	for(unsigned a = 1; a <= limit; a++)
    	{
    		unsigned a2 = a*a;
    		for(unsigned b = a; b <= limit; b++)
    		{
    			unsigned sum = a2 + b*b;
    			unsigned c;
    			for(c = b + 1; (c*c) < sum; c++)
    				;
    			if((c*c) == sum)
    			{
    				printf("%d^2 + %d^2 = %d^2\n", a, b, c);
    				printf("%d^2 + %d^2 = %d^2\n", b, a, c);
    				found += 2;
    			}
    		}
    	}
    
    	return found;
    }
    

Anmelden zum Antworten