|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
using namespace std;
int main()
{
int a,b,c,temp;
cin>>a>>b;
c=a*b;
b=a<b?a:b;
a=a>b?a:b;
while(temp!=0)
{
int temp=a%b;
a=b;
b=temp;
}
cout<<"最大公约数为"<<a<<endl;
cout<<"最小公倍数为"<<c/a<<endl;
return 0;
}
在这段代码中,存在一个错误。错误发生在while循环之前的地方。
在while循环之前,你声明了一个名为temp的变量,但是没有给它赋初值。然后在while循环中,你又声明了一个名为temp的变量,并且给它赋了初值。这样,while循环中的temp变量将会隐藏之前声明的temp变量。
为了解决这个问题,你需要在while循环之前给temp变量赋一个初值。例如,你可以将temp初始化为a,因为在最大公约数算法中,temp的初始值应该是a。
以下是修正后的代码:
- #include<iostream>
- using namespace std;
- int main()
- {
- int a,b,c,temp;
- cin>>a>>b;
- c=a*b;
-
- b=a<b?a:b;
- a=a>b?a:b;
-
- temp = a; // 给temp赋初值a
-
- while(temp!=0)
- {
- temp=a%b;
- a=b;
- b=temp;
- }
- cout<<"最大公约数为"<<a<<endl;
- cout<<"最小公倍数为"<<c/a<<endl;
- return 0;
- }
复制代码
现在,这段代码应该能够正确计算最大公约数和最小公倍数了。
|
|