Наибольший общий делитель Objective-C - PullRequest
2 голосов
/ 23 октября 2011

Я новичок в программировании на 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;

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

Ответы [ 3 ]

2 голосов
/ 23 октября 2011

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

1 голос
/ 23 октября 2011

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

0 голосов
/ 21 декабря 2011

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

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

...