Objective c 目标c的最大公因数
我对目标c还不熟悉,我想知道是否有一种方法可以获得最大公因数Objective c 目标c的最大公因数,objective-c,math,Objective C,Math,我对目标c还不熟悉,我想知道是否有一种方法可以获得最大公因数 例如,gcf()这样你就明白了,没有现成的功能。由于Objective-C是C的超集,因此您可以获取现有库或函数集,并在必要时将其包括在内 基于,您可以执行以下操作: // gcd.h int gcd(int m, int n); // gcd.c int gcd(int m, int n) { int t, r; if (m < n) { t = m; m = n; n = t; }
例如,
gcf()
这样你就明白了,没有现成的功能。由于Objective-C是C的超集,因此您可以获取现有库或函数集,并在必要时将其包括在内
基于,您可以执行以下操作:
// gcd.h
int gcd(int m, int n);
// gcd.c
int gcd(int m, int n) {
int t, r;
if (m < n) {
t = m;
m = n;
n = t;
}
r = m % n;
if (r == 0) {
return n;
} else {
return gcd(n, r);
}
}
没有内置的方法,但是该方法易于实现,并且非常有效
可以稍微提高效率。这个链接有C代码来实现它。到目前为止,这是我遇到的最优雅的解决方案(当然是非递归的):
.仅将damian86的答案转换为Objective-C风格(参考
self
假设对象的上下文,进行相应修改,您可以将其作为一个类别,等等):
-(int)最大公约数形式:(int)mn:(int)N
{
int t,r;
if(m
不要在头文件中定义函数,否则如果有多个文件包含它,则会出现链接错误。
#import "gcd.h"
int gcd (int a, int b){
int c;
while ( a != 0 ) {
c = a; a = b%a; b = c;
}
return b;
}
-(int)greatestCommonDivisorM:(int)m N:(int)n
{
int t, r;
if (m < n) {
t = m;
m = n;
n = t;
}
r = m % n;
if (r == 0) {
return n;
} else {
return [self greatestCommonDivisorM:n N:r];
}
}