《计算机程序设计艺术》
1.3的习题:
改变算法E,使得像“m = n”这样平凡的替代运算都加以避免。称之为F算法。
下边是我的作业:(在Dev C++ 环境中)
//我们只是研究算法,我假定m比n大,当然,你要经过判断也行!
#include <iostream>
using namespace std;
int getN(int m,int n)
{
int p;
do{
p = m % n;
if(p ==0)
return n;
m = n % p;
if(m == 0)
return p;
n = p % m;
if(n == 0)
return m;
}while(true);
}
int main()
{
int m,n;
do{
cout << "请输入 m 和 n(m 和 n 都不能为0):" ;
cin >> m >> n;
}while(m == 0 || n == 0)
cout << "/n最大公约数为:" << getN(m,n);
system("pause");
return 0;
}
不用我多解释了吧?
其实也不用判断 m 和 n 的大小
下边的这个程序判断了m 和n 的大小:
#include <iostream>
using namespace std;
int theBigger(int m,int n)
{
return m >= n ? m : n;
}
int theSmaller(int m,int n)
{
return m <= n ? m : n;
}
int getN(int m,int n)
{
int p;
do{
p = m % n;
if(p ==0)
return n;
m = n % p;
if(m == 0)
return p;
n = p % m;
if(n == 0)
return m;
}while(true);
}
int main()
{
int m,n;
do{
cout << "/n请输入 m 和 n(m 和 n 都不能为0)";
cin >> m >> n;
}while(m == 0 || n == 0 );
cout << "/n最大公约数为:" << getN(theBigger(m,n),theSmaller(m,n));
system("pause");
return 0;
}
有什么问题或者新想法请和我交流
1.3的习题:
改变算法E,使得像“m = n”这样平凡的替代运算都加以避免。称之为F算法。
下边是我的作业:(在Dev C++ 环境中)
//我们只是研究算法,我假定m比n大,当然,你要经过判断也行!
#include <iostream>
using namespace std;
int getN(int m,int n)
{
int p;
do{
p = m % n;
if(p ==0)
return n;
m = n % p;
if(m == 0)
return p;
n = p % m;
if(n == 0)
return m;
}while(true);
}
int main()
{
int m,n;
do{
cout << "请输入 m 和 n(m 和 n 都不能为0):" ;
cin >> m >> n;
}while(m == 0 || n == 0)
cout << "/n最大公约数为:" << getN(m,n);
system("pause");
return 0;
}
不用我多解释了吧?
其实也不用判断 m 和 n 的大小
下边的这个程序判断了m 和n 的大小:
#include <iostream>
using namespace std;
int theBigger(int m,int n)
{
return m >= n ? m : n;
}
int theSmaller(int m,int n)
{
return m <= n ? m : n;
}
int getN(int m,int n)
{
int p;
do{
p = m % n;
if(p ==0)
return n;
m = n % p;
if(m == 0)
return p;
n = p % m;
if(n == 0)
return m;
}while(true);
}
int main()
{
int m,n;
do{
cout << "/n请输入 m 和 n(m 和 n 都不能为0)";
cin >> m >> n;
}while(m == 0 || n == 0 );
cout << "/n最大公约数为:" << getN(theBigger(m,n),theSmaller(m,n));
system("pause");
return 0;
}
有什么问题或者新想法请和我交流