最大公约数Objective-C

时间:2011-10-23 02:35:25

标签: objective-c greatest-common-divisor

我是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 个答案:

答案 0 :(得分:2)

该部分实际上使用Euclidean algorithm来计算最大公约数。

答案 1 :(得分:1)

%是mod operator。这三行将u除以v,并将余数存储在temp中。然后u获取v的值,v获取余数。在v不为0的情况下重复该过程。

答案 2 :(得分:0)

我看到你正在使用欧几里得算法

如您所见,temp = u%v%是一个模运算符,它将u和v分开,其余部分存储在temp。然后将值存储在变量v中,最后将temp的值存储在变量v中,整个过程将重复,直到v的值不等于0或不为0.