我是编程新手,正在学习C ++。
我已经使用C ++实现了Euclid最大的除数算法。
int main()
{
int n = 78;
int m = 52;
float r = 0;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
cout << m;
}
我现在想修改上面的C ++代码。我想将M更改为{{324,737},N = {68,207,927,87,126,6347,563,178,437}。
我试图确定集合G = {gcd(m,n):m∈M和n∈N}。
对于每对(m,n),我试图计算进入while循环的次数w
。然后,我想确定w
的平均值及其标准偏差。
我的尝试
int n[9] = { 68, 207, 927, 87, 126, 6347, 563, 178, 437 };
int m[2] = { 324, 737 };
float r = 0;
int w;
while (n != 0){
int i = 1;
r = m[i] % n[i];
m = n;
n = r;
i++;
w++;
}
float average = w / 9;
float stdev = 0.0;
cout << m;
这让我感到困惑。如何更改它以接受数组,然后如何计算和确定w
,平均值和STDEV?
答案 0 :(得分:0)
函数可帮助您将代码(和问题)分成不同的部分。例如,您可以这样做:
int numberOfGcdLoopIterations(int n, int m)
{
int r = 0;
int loopCount = 0;
while (n != 0)
{
r = m % n;
m = n;
n = r;
++loopCount;
}
return loopCount;
}
然后,您可以为所需的任何n
和m
调用此函数,并获取相应的w
。现在,问题简化为“如何为给定集合中的每对m
和n
调用此函数”和“如何计算返回值的平均值和标准偏差”。您应该可以从这里解决这些问题。