Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-02-2005, 09:58   #1 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
grösster gemeinsamer teiler

hallo....folgende frage:

gibt es in AS eine möglichkeit den ggT (grösster gemeinsamer Teiler) zu ermitteln???

so à la:

ggT(12, 18) = 6


merci und gruzz

duc
duc ist offline   Mit Zitat antworten
Alt 26-02-2005, 11:03   #2 (permalink)
hobbyflasher
 
Benutzerbild von lasic+
 
Registriert seit: Jun 2003
Ort: NRW
Beiträge: 229
bitte schön:

ActionScript:
  1. function ggt(a, b)
  2. {
  3.     do{
  4.          var r = a % b;
  5.          a = b;
  6.          b = r;
  7.       } while(b!=0);
  8.       return a;
  9. }
  10.  
  11. trace(ggt(12, 18)); //Ergibt natürlich 6
  12.  
__________________
gruß lasic+
lasic+ ist offline   Mit Zitat antworten
Alt 26-02-2005, 11:06   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Porta Westfalica
Beiträge: 28
Zwei gerahmte Eingabefelder z1 und z2 .
Dazu ein dyn. Textfeld restAus
Code:
function ggT(z1,z2)
	{rest=z1 % z2; 
	if (rest==0){_root.restAus=z2; }
	else do 
	       if (z1 % rest==0 && z2 % rest==0) 
	           {_root.restAus=rest; break;}
             while(rest>1 &&  rest--)
	}

this.onMouseDown=function()
{ggT(_root.z1,_root.z2)}
Das alles ergibt sich, wenn man weiß:
Der ggT muss ein Teiler des Restes sein (bei der Division z1 / z2)
__________________
Oltmann

Geändert von pwoh (26-02-2005 um 11:27 Uhr)
pwoh ist offline   Mit Zitat antworten
Alt 26-02-2005, 11:59   #4 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
werd das mal checken..

besten dank....
duc ist offline   Mit Zitat antworten
Alt 26-02-2005, 12:42   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Hab hier auch noch was!

PHP-Code:
function ggTa)
{
  var 
r;
  if( 
Math.abs);
  if( 
Math.abs);
  while( 
)
  {
       
b;
       
b;
       
r;
  }
  return 
a;
}

traceggt12, -) ); 
@lasic+
Wenn ich Deine Funktion mit folgenden Parameten aufrufe, schmiert mir Flash ab!
ggt( 10, 0 );
__________________
ERROR: Signature is too large

Geändert von rendner[i] (26-02-2005 um 12:56 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 26-02-2005, 13:11   #6 (permalink)
hobbyflasher
 
Benutzerbild von lasic+
 
Registriert seit: Jun 2003
Ort: NRW
Beiträge: 229
ok, hasst Recht, ich korrigiere mich:

ActionScript:
  1. function ggt(a, b)
  2. {
  3.     if(a == 0 || b == 0)
  4.     {
  5.         return 0;
  6.     }
  7.     else
  8.     {
  9.         do{
  10.             var r = a % b;
  11.             a = b;
  12.             b = r;
  13.         } while(b!=0);
  14.         return a;
  15.     }
  16. }
  17. trace(ggt(12, 18));

geht bestimmt noch kürzer....
__________________
gruß lasic+
lasic+ ist offline   Mit Zitat antworten
Alt 26-02-2005, 18:56   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Nana lasic+, das ist aber nicht so ganz koreckt!!!!!
Wenn ein Wert von den 2en 0 ist dann ist bestimmt nicht 0 der gröstmögliche Teiler, sondern der andere!
Und in der do-while-Schleife würde ich auch nicht immer die Variable r neu Initialisieren sondern vorher.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (26-02-2005 um 18:57 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 26-02-2005, 19:09   #8 (permalink)
hobbyflasher
 
Benutzerbild von lasic+
 
Registriert seit: Jun 2003
Ort: NRW
Beiträge: 229
;-( ach menooo! Gib zu, hab mich beeilt, gut dass welche aufpassen!

Naja, aus so vielen Lösungen kann duc sich ja bestimmt was zusammenschustern...
__________________
gruß lasic+
lasic+ ist offline   Mit Zitat antworten
Alt 26-02-2005, 20:33   #9 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
jaja
Geht mir auch immer so.
Aber ich glaub das Teil von mir müsste das alles umgehen...
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 26-02-2005, 22:35   #10 (permalink)
duc
c'est possible
 
Registriert seit: Jan 2004
Ort: Schwitzerland
Beiträge: 80
zusammenschustern

hallo zusammen...habt euc hja fleissig überboten...schön...ich danke euch...hab mir da schon mal was geschustert...schönen sonntag...gruzz düc
duc ist offline   Mit Zitat antworten
Alt 27-02-2005, 06:21   #11 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Mensch, hört das denn nie auf...?
Habe nochn Fehler gefunden!
Und zwar nach etwas Überlegung, der kleinste gröstmögliche Teiler ist 1 und nicht 0 (da gibts ja so ein tolle Mathematik-Regel ).
Dies wäre der Fall ggt( 0, 0 ), da müsste wenn man sich das mathematisch überlegt eigentlich unendlich zurückgegeben werden.
Da die 0 durch jede natürliche Zahl geteilt, wieder 0 ergibt und es somit ja immer noch einen noch grösseren ggt für diesen Fall gäbe.
Aber ich denke, es reicht wenn man ne 1 ausgibt .

So nun habe ichs mit eingebaut.
PHP-Code:
function ggTa)

  if( 
== 0  &&  == ) return 1;
  if( 
Math.abs); 
  if( 
Math.abs); 
  var 
0
  while( 

  { 
       
b
       
b;
       
r
  } 
  return  
a


traceggt0) ); 
__________________
ERROR: Signature is too large

Geändert von rendner[i] (27-02-2005 um 11:39 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele