GCD This is a GCD, standard (Euclid's) algorithm: ``` \$declareint number1 number2 gcd zero \$invar number1(3) number2(9) \$invar number1(125) number2(65) \$rinvar number1(1,10000) number2(1,10000) \$retvar gcd \$minimize lines off \$bes while (number1!=zero) { gcd=number2%number1; number2=number1; number1=gcd; } gcd=number2; \$ees``` What we have got out of Critticall, is this: ``` // The algorithm has been enhanced for 49.8188% \$DECLAREINT number1 gcd number2 \$INVAR number1(3) number2(9) \$INVAR number1(125) number2(65) \$MINIMIZE LINES 60 \$RINVAR number1(1,10000) number2(1,10000) \$RETVAR gcd // int number1=0;int gcd=0;int number2=0; \$BES number1=number1%number2; while (number1!=gcd) { number2=number2%number1; if (gcd==number2) { break; } number1=number1%number2; } gcd=number1^number2; \$EES ``` Two times less steps for number pairs up to 1000, and even faster for larger numbers. It's conjectural algorithm, however. And this is a standard GCD for three arguments. Based on the fact, that GCD(number1,number2,number3) = GCD(GCD(number1,number2),number3) ``` \$DECLAREINT number1 gcd number2 number3 zero \$rinvar number1(1,1000) number2(1,1000) number3(1,1000) \$retvar gcd \$minimize lines off \$bes while (number1!=zero) { gcd=number2%number1; number2=number1; number1=gcd; } while (number2!=zero) { gcd=number3%number2; number3=number2; number2=gcd; } gcd = number3; \$ees``` What we have got now, is this: ``` // The algorithm has been enhanced for 50.6078% \$DECLAREINT number1 gcd number2 number3 \$MINIMIZE LINES 110 \$RINVAR number1(1,1000) number2(1,1000) number3(1,1000) \$RETVAR gcd // int number1=0;int gcd=0;int number2=0;int number3=0; \$BES number1=number1%number3; while (number1!=gcd) { number2=number2%number1; if (number2==gcd) { number2=number1; break; } number1=number1%number2; } number1=number3%number2; while (number1!=gcd) { number2=number2%number1; if (number2==gcd) { break; } number1=number1%number2; } gcd=number2|number1; \$EES``` This is as also twice as fast. And conjectural as well.