2

私は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;

それは英語でどういう意味ですか?

4

3 に答える 3

2

その部分は、実際にはユークリッドの互除法を使用して最大公約数を計算します。

于 2011-10-23T02:39:32.220 に答える
1

%はモジュロ演算子です。これらの3行は除算uされv、残りは一時的に保存されます。次にu、の値をv取得vし、残りを取得します。vが0でない間、このプロセスが繰り返されます。

于 2011-10-23T02:40:39.233 に答える
0

ユークリッドアルゴリズムを使用しているようです

ご覧のとおり、temp = u%v% はモジュロ演算子であり、u と v を除算し、残りを一時的に格納します。次に、 の値が変数 v に格納され、最後に temp の値が変数 v に格納されます。このプロセス全体が、v の値が 0 に等しくなくなるか、0 以外になるまで繰り返されます。

于 2011-12-21T13:02:41.707 に答える