一、c++编程 求两个数最大公约数
哈啊,这几天刚刚做完这个作业,下面就是我自己编的程序,最大公约数gcd,最小公倍数lcm,给你参照参照。
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
int i;
for(i=(a<b?a:b);i>=1;i--)
{
if(a%i==0&&b%i==0)
break;
}
return i;
}
int gcd(int,int);
int lcm(int a,int b)
{
int i;
i=a*(b/gcd(a,b));
return i;
}
int gcd(int,int);
int main()
{
int a,b;
cout<<输入两个整数:<<endl;
cin>>a>>b;
cout<<最大公约数:<<gcd(a,b)<<endl;
cout<<最小公倍数:<<lcm(a,b)<<endl;
return 0;
}
你这儿没说是哪两个数,我就设为m和n了哈。
input m,n
if m<n then swap m,n
r=mod(m,n)
while r≠ 0 do
m=n
n=r
r=mod(m,n)
end do
print n
觉得不错的话,记得给我评“采纳最佳答案”哦
while(b)
{ int temp=a%b;
a=b;
b=temp;}
a就为最大公约数
二、C语言编程:两个数的最大公约数,最小公倍数
特意去安装了WinTC,发现果然如此。找到原因了。
C-Free自带的是Gcc编译器,而WinTC用的是Turbo C 2.0的编译器。
两者对int的字长定义不同。数字33852 > 32768,在DOS的TC下,不能用 int 类型。
在WinTC下,做如下更改,就可以正确达到你的效果了。
int a,b,c,d,m,n;
更改为:
int a,b c,m,n;
unsigned long d;
printf(%d\n,d);break; /* 输出最小公倍数 */
更改为:
printf(%u\n,d);break; /* 输出最小公倍数 */
就可以了。我测试后可以正常显示结果了。
main()
{
int a,b,num1,num2,temp;
printf(please input two
numbers:\n);
scanf(%d,%d,&num1,&num2);
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf(gongyueshu:%d\n,a);
printf(gongbeishu:%d\n,num1*num2/a);
}
三、编程最大公约数怎么求 谢谢 急
对不起,我学的是VB专业:
Private Sub Command1_Click()
a = Int(Val(Text1.Text))
b = Int(Val(Text2.Text))
If a > b Then
c = a
Else
c = b
End If
For i = c To 1 Step -1
If ((a Mod i) <= 0) And ((b Mod i) <= 0) Then gys = i: Exit For
Next
If gys <= 1.5 Then
MsgBox 没有公约数
Else
MsgBox 最大公约数: & gys
End If
End Sub
四、编程求两个数的最大公约数
Function GB(x, y) ’最小公倍数
Dim i As Integer
For i = 1 To x * y
If i Mod x = 0 And i Mod y = 0 Then
GB = i
Exit For
End If
Next
End Function
Function GY(x, y) ‘最大公约数
Dim i As Integer
For i = 1 To Int((x + y) / 2)
If x Mod i = 0 And y Mod i = 0 Then
GY = i
End If
Next
End Function
- 相关评论
- 我要评论
-