帮我写个程序
- 提问者网友:孤山下
- 2021-05-05 15:18
- 五星知识达人网友:旧脸谱
- 2021-05-05 16:21
非递归法:
#include<stdio.h>
int gcd(int m,int n);
int lcm(int m,int n);
int main()
{
int m,n;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
printf("最大公约数是%d,最小公倍数是%d\n",gcd(m,n),lcm(m,n));
return 0;
}
int gcd(int m,int n)
{
int a;
if(m>=n)
a=n;
else
a=m;
while(n%a!=0||m%a!=0)
a--;
return a;
}
int lcm(int m,int n)
{
int a;
if(m>=n)
a=m;
else
a=n;
while(a%n!=0||a%m!=0)
a++;
return a;
}
递归法:
#include<stdio.h>
int gcd(int m,int n);
int main()
{
int m,n;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
printf("最大公约数是%d,最小公约数是%d\n",gcd(m,n),m*n/gcd(m,n));
return 0;
}
int gcd(int m,int n)
{
if(m==n)
return m;
if(m==1||n==1)
return 1;
if(m>n)
return gcd(m-n,n);
if(m<n)
return gcd(m,n-m);
}
- 1楼网友:duile
- 2021-05-05 18:35
- 2楼网友:轮獄道
- 2021-05-05 17:22
最大公约数
Private Sub Command1_click() Dim a As inter, b As Integer, r As Integer, maxv As Integer, minv As Integer Me.Cls '最大公约数 a = Val(Text1.Text) b = Val(Text2.Text) maxv = IIf(a > b, a, b) minv = IIf(a < b, a, b) Do r = maxv Mod minv: maxv = minv: minv = r Loop While (r <> 0) '最小公倍数 minv = a * b / maxv Print "最大公约数 =" & Str(maxv) & Space(2) & "最小公倍数=" & Str(minv) End Sub