虽然试图从编程简化GCD和LCM程序...我面临着结果问题。我做的一切都是正确的(据我说),甚至逐字检查,但问题仍然存在......我只粘贴普通方法的代码。
#include <stdio.h>
int main()
{
int a, b, x, y, t, gcd, lcm;
printf("Enter first number :");
scanf("%d", &a);
printf("Enter first number :");
scanf("%d", &b);
a = x;
b = y;
while (b != 0)
{
t = b;
b = a % b;
a = t;
}
gcd = a;
lcm = (x * y)/gcd;
printf("Greatest common divisior of %d and %d = %dn", x, y, gcd);
printf("Lowest common divisior of %d and %d = %dn", x, y, lcm);
getch();
}
至少这部分从根本上是错误的:
int a, b, x, y, t, gcd, lcm;
printf("Enter first number :");
scanf("%d", &a);
printf("Enter first number :");
scanf("%d", &b);
a = x;
b = y;
因此,您声明x
和y
未初始化,然后将它们分配给a
和b
- 现在a
和b
不包含用户输入的值,而是一些垃圾。你可能想要
x = a;
y = b;
相反。
最好试试这个。这更容易运行。
#include<stdio.h>
int GCD(int,int);
void main(){
int p,q;
printf("Enter the two numbers: ");
scanf("%d %d",&p,&q);
printf("nThe GCD is %d",GCD(p,q));
printf("nThe LCM is %d",(p*q)/(GCD(p,q)));
}
int GCD(int x,int y){
if(x<y)
GCD(y,x);
if(x%y==0)
return y;
else{
GCD(y,x%y);
}
}
试试吧
#include<stdio.h>
int main(){
int a,b,lcm,gcd;
printf("enter two value:n");
scanf("%d%d",&a,&b);
gcd=GCD(a,b);
lcm=LCM(a,b);
printf("LCM=%d and GCD=%d",lcm,gcd);
return 0;
}
int GCD(int a, int b){
while(a!=b){
if(a>b){
a=a-b;
}else{
b=b-a;
}
}
return a;
}
int LCM(int a, int b){
return (a*b)/GCD(a,b);
}