c++编程 求两个数最大公约数

192 2024-03-08 02:29

一、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

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片