наибольший общий делитель Objective-C

Я новичок в программировании на ios. У меня вопрос по программе GCD.

01 // This program finds the greatest common divisor of two nonnegative integer values
02 
03 #import <Foundation/Foundation.h>
04 
05 int main (int argc, const char * argv[]) {
06     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
07     unsigned int u, v, temp;
08     
09     NSLog(@"Please type in two nonnegative integers.");
10     scanf("%u%u", &u, &v);
11     
12     while (v != 0) {
13         temp = u % v;
14         u = v;
15         v = temp;
16     }
17     
18     NSLog(@"Their greatest common divisor is %u", u);
19     
20     [pool drain];
21     return 0;
22 }

Я не понимаю эту часть:

while(v!=0)
     temp = u%v
     u =v;
     v = temp;

Что это значит на английском?


person Ben    schedule 23.10.2011    source источник


Ответы (3)


% — это оператор мода. Эти три строки делят u на v и сохраняют остаток в temp. Затем u получает значение v, а v получает остаток. Процесс повторяется, пока v не равно 0.

person ObscureRobot    schedule 23.10.2011

Эта часть фактически вычисляет наибольший общий делитель, используя алгоритм Евклида.

person Dennis    schedule 23.10.2011

Я вижу, вы используете алгоритм Евклида

как вы можете видеть, temp = u%v % — это оператор по модулю, где он делит u и v, а оставшаяся часть хранится в temp. затем значение сохраняется в переменной v и, наконец, значение temp сохраняется в переменной v. Весь этот процесс будет повторяться до тех пор, пока значение v не будет равно 0 или не будет равно 0.

person KyelJmD    schedule 21.12.2011