main()
{
int a,b,c;
scanf("%d%d",&a,&b);
if(a>b)
for(c=b;c>=1;c--)
if(a%c==0)
{
printf("%c\n",c);
break;
}
if(a<b)
for(c=b;;c++)
if(c%a==0)
{
printf("%c\n",c);
break;
}
getch();
}
17 个解决方案
#1
main()
{
int a,b,c,d,e;
scanf("%d,%d",&a,&b);
if(a<b)
{e=a;a=b;b=e;} /*把大的数放在a中!*/
d=a*b
while(b!=0)
{c=a%b;a=b;b=c} /*求a,b的最大公约数*/
printf("最大公约数和最小公倍数为:%d,%d",a,d/a);
}
{
int a,b,c,d,e;
scanf("%d,%d",&a,&b);
if(a<b)
{e=a;a=b;b=e;} /*把大的数放在a中!*/
d=a*b
while(b!=0)
{c=a%b;a=b;b=c} /*求a,b的最大公约数*/
printf("最大公约数和最小公倍数为:%d,%d",a,d/a);
}
#2
结果不对
#3
以前写过:Ctrl + V 给你
最小公倍数:
#include<stdio.h>
int lcm(int a,int b)
{
int temp , sum = 0;
if( a < b)
{
temp = a;
a = b ;
b = temp;
}
sum = a;
while(a%b!=0)
{
a+=sum;
}
return a;
}
main()
{
int num1 , num2 ,k;
system("cls");
printf("Input num1 and num2 \n");
scanf("%d%d" , &num1 , &num2);
k = lcm(num1 , num2);
printf("\n%d",lcm(num1 , num2));
}
最小公倍数:
#include<stdio.h>
int lcm(int a,int b)
{
int temp , sum = 0;
if( a < b)
{
temp = a;
a = b ;
b = temp;
}
sum = a;
while(a%b!=0)
{
a+=sum;
}
return a;
}
main()
{
int num1 , num2 ,k;
system("cls");
printf("Input num1 and num2 \n");
scanf("%d%d" , &num1 , &num2);
k = lcm(num1 , num2);
printf("\n%d",lcm(num1 , num2));
}
#4
麻烦下次给点分啊~!
这题目不是在潭书上有答案吗?其实大数和小数可以交换
大家看下面的代码:
求任意两个正整数的最大公约数和和最小公倍数
*问题分析与算法设计
手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。
*程序与程序注释
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("Input a & b:");
scanf("%d%d",&num1,&num2);
if(num1>num2) /*找出两个数中的较大值*/
{
temp=num1; num1=num2; num2=temp; /*交换两个整数*/
}
a=num1; b=num2;
while(b!=0) /*采用辗转相除法求最大公约数*/
{
temp=a%b;
a=b;
b=temp;
}
printf("The 最大公 of %d and %d is: %d\n",num1,num2,a); /*输出最大公约数*/
printf("The 最小 of them is: %d\n",num1*num2/a); /*输出最小公倍数*/
这题目不是在潭书上有答案吗?其实大数和小数可以交换
大家看下面的代码:
求任意两个正整数的最大公约数和和最小公倍数
*问题分析与算法设计
手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。
*程序与程序注释
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("Input a & b:");
scanf("%d%d",&num1,&num2);
if(num1>num2) /*找出两个数中的较大值*/
{
temp=num1; num1=num2; num2=temp; /*交换两个整数*/
}
a=num1; b=num2;
while(b!=0) /*采用辗转相除法求最大公约数*/
{
temp=a%b;
a=b;
b=temp;
}
printf("The 最大公 of %d and %d is: %d\n",num1,num2,a); /*输出最大公约数*/
printf("The 最小 of them is: %d\n",num1*num2/a); /*输出最小公倍数*/
#5
if(num1>num2) 这个判断条件 可以换成 if(num1<num2)
不信你们去看看
不信你们去看看
#6
楼上求最小公倍数的方法好象不太正确
再贴个算法
function lcm(a,b:integer):integer;
begin
if a< b then swap(a,b);
lcm:=a;
while lcm mod b >0 do inc(lcm,a);
end;
再贴个算法
function lcm(a,b:integer):integer;
begin
if a< b then swap(a,b);
lcm:=a;
while lcm mod b >0 do inc(lcm,a);
end;
#7
欧几里德算法
#8
各位能否就我的这个思路进行修改
#9
你的这个啊,我给你说一个数,看一下啊,输入.21,8
的话,会用第一部分
for(c=b;c>=1;c--)
if(a%c==0)
{
printf("%c\n",c);
break;
}
你看一下,只是把c=8
21%c!=0
c=7
21%c==0;
结束,这怎么会对呢!要改你的那个就太多了,改完后我想,你的这个就不是你写的了,全都改了
的话,会用第一部分
for(c=b;c>=1;c--)
if(a%c==0)
{
printf("%c\n",c);
break;
}
你看一下,只是把c=8
21%c!=0
c=7
21%c==0;
结束,这怎么会对呢!要改你的那个就太多了,改完后我想,你的这个就不是你写的了,全都改了
#10
帮看看这个,为什么当我输入12和15的时候它显示有4行前2行是对的,3和60.但后两行怎么显示1和180.其他的数都没这种情况
main()
{
int a,b,c;
printf("input two numbers:\n");
scanf("%d%d",&a,&b);
if(a>b)
c=b;
else c=a;
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
}
main()
{
int a,b,c;
printf("input two numbers:\n");
scanf("%d%d",&a,&b);
if(a>b)
c=b;
else c=a;
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
}
#11
高手快来帮忙啊
#12
用欧几里德算法算出a和b的最大公约数后,用 a*b/最大公约数 就是最小公倍数。
#13
我是这样啊,但我输入12和15之后它怎么多出两行东西.你运行看看
#14
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
这段程序不是求最大公约数,而是求所有的公约数。只要在求出第一个公约数的时候加个break语句跳出循环就可。
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
这段程序不是求最大公约数,而是求所有的公约数。只要在求出第一个公约数的时候加个break语句跳出循环就可。
#15
我认为你的错很多
而且你这个只是求最大公数
#include <stdio.h>
main()
{
int m,n,t,b,y;
scanf("%d%d",&m,&n);
for (t=1;t<=m&&t<=n;t++)
{
if(m%t==0&&n%t==0) y=t;
}
if(m>n) b=m;
else b=n;
for (;!(b%m==0&&b%n==0)&&b<=m*n;b++);
printf("%d %d\n",y,b);
getch();
}
而且你这个只是求最大公数
#include <stdio.h>
main()
{
int m,n,t,b,y;
scanf("%d%d",&m,&n);
for (t=1;t<=m&&t<=n;t++)
{
if(m%t==0&&n%t==0) y=t;
}
if(m>n) b=m;
else b=n;
for (;!(b%m==0&&b%n==0)&&b<=m*n;b++);
printf("%d %d\n",y,b);
getch();
}
#16
我写的程序发不上来。。。“请不要发表可能给我们带来伤害的言论,谢谢配合”
#17
#include <iostream.h>
void main()
{
int a,b,min;
cout<<"Please input two number :";
cin>>a>>b;
min=a<b?a:b;
int t=0;
for(int i=2;i<=min;i++)
{
if(a%i==0&&b%i==0)
{
t=i;
}
}
if(t==0)
{
cout<<"No greatest common divisor.\n";
cout<<"Min common times :"<<(a*b)<<endl;
}
else
{
cout<<"The greatest common divisor is :"<<t<<endl;
cout<<"Min common times :"<<(a*b)/t<<endl;
}
cout<<endl;
}
void main()
{
int a,b,min;
cout<<"Please input two number :";
cin>>a>>b;
min=a<b?a:b;
int t=0;
for(int i=2;i<=min;i++)
{
if(a%i==0&&b%i==0)
{
t=i;
}
}
if(t==0)
{
cout<<"No greatest common divisor.\n";
cout<<"Min common times :"<<(a*b)<<endl;
}
else
{
cout<<"The greatest common divisor is :"<<t<<endl;
cout<<"Min common times :"<<(a*b)/t<<endl;
}
cout<<endl;
}
#1
main()
{
int a,b,c,d,e;
scanf("%d,%d",&a,&b);
if(a<b)
{e=a;a=b;b=e;} /*把大的数放在a中!*/
d=a*b
while(b!=0)
{c=a%b;a=b;b=c} /*求a,b的最大公约数*/
printf("最大公约数和最小公倍数为:%d,%d",a,d/a);
}
{
int a,b,c,d,e;
scanf("%d,%d",&a,&b);
if(a<b)
{e=a;a=b;b=e;} /*把大的数放在a中!*/
d=a*b
while(b!=0)
{c=a%b;a=b;b=c} /*求a,b的最大公约数*/
printf("最大公约数和最小公倍数为:%d,%d",a,d/a);
}
#2
结果不对
#3
以前写过:Ctrl + V 给你
最小公倍数:
#include<stdio.h>
int lcm(int a,int b)
{
int temp , sum = 0;
if( a < b)
{
temp = a;
a = b ;
b = temp;
}
sum = a;
while(a%b!=0)
{
a+=sum;
}
return a;
}
main()
{
int num1 , num2 ,k;
system("cls");
printf("Input num1 and num2 \n");
scanf("%d%d" , &num1 , &num2);
k = lcm(num1 , num2);
printf("\n%d",lcm(num1 , num2));
}
最小公倍数:
#include<stdio.h>
int lcm(int a,int b)
{
int temp , sum = 0;
if( a < b)
{
temp = a;
a = b ;
b = temp;
}
sum = a;
while(a%b!=0)
{
a+=sum;
}
return a;
}
main()
{
int num1 , num2 ,k;
system("cls");
printf("Input num1 and num2 \n");
scanf("%d%d" , &num1 , &num2);
k = lcm(num1 , num2);
printf("\n%d",lcm(num1 , num2));
}
#4
麻烦下次给点分啊~!
这题目不是在潭书上有答案吗?其实大数和小数可以交换
大家看下面的代码:
求任意两个正整数的最大公约数和和最小公倍数
*问题分析与算法设计
手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。
*程序与程序注释
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("Input a & b:");
scanf("%d%d",&num1,&num2);
if(num1>num2) /*找出两个数中的较大值*/
{
temp=num1; num1=num2; num2=temp; /*交换两个整数*/
}
a=num1; b=num2;
while(b!=0) /*采用辗转相除法求最大公约数*/
{
temp=a%b;
a=b;
b=temp;
}
printf("The 最大公 of %d and %d is: %d\n",num1,num2,a); /*输出最大公约数*/
printf("The 最小 of them is: %d\n",num1*num2/a); /*输出最小公倍数*/
这题目不是在潭书上有答案吗?其实大数和小数可以交换
大家看下面的代码:
求任意两个正整数的最大公约数和和最小公倍数
*问题分析与算法设计
手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。
*程序与程序注释
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("Input a & b:");
scanf("%d%d",&num1,&num2);
if(num1>num2) /*找出两个数中的较大值*/
{
temp=num1; num1=num2; num2=temp; /*交换两个整数*/
}
a=num1; b=num2;
while(b!=0) /*采用辗转相除法求最大公约数*/
{
temp=a%b;
a=b;
b=temp;
}
printf("The 最大公 of %d and %d is: %d\n",num1,num2,a); /*输出最大公约数*/
printf("The 最小 of them is: %d\n",num1*num2/a); /*输出最小公倍数*/
#5
if(num1>num2) 这个判断条件 可以换成 if(num1<num2)
不信你们去看看
不信你们去看看
#6
楼上求最小公倍数的方法好象不太正确
再贴个算法
function lcm(a,b:integer):integer;
begin
if a< b then swap(a,b);
lcm:=a;
while lcm mod b >0 do inc(lcm,a);
end;
再贴个算法
function lcm(a,b:integer):integer;
begin
if a< b then swap(a,b);
lcm:=a;
while lcm mod b >0 do inc(lcm,a);
end;
#7
欧几里德算法
#8
各位能否就我的这个思路进行修改
#9
你的这个啊,我给你说一个数,看一下啊,输入.21,8
的话,会用第一部分
for(c=b;c>=1;c--)
if(a%c==0)
{
printf("%c\n",c);
break;
}
你看一下,只是把c=8
21%c!=0
c=7
21%c==0;
结束,这怎么会对呢!要改你的那个就太多了,改完后我想,你的这个就不是你写的了,全都改了
的话,会用第一部分
for(c=b;c>=1;c--)
if(a%c==0)
{
printf("%c\n",c);
break;
}
你看一下,只是把c=8
21%c!=0
c=7
21%c==0;
结束,这怎么会对呢!要改你的那个就太多了,改完后我想,你的这个就不是你写的了,全都改了
#10
帮看看这个,为什么当我输入12和15的时候它显示有4行前2行是对的,3和60.但后两行怎么显示1和180.其他的数都没这种情况
main()
{
int a,b,c;
printf("input two numbers:\n");
scanf("%d%d",&a,&b);
if(a>b)
c=b;
else c=a;
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
}
main()
{
int a,b,c;
printf("input two numbers:\n");
scanf("%d%d",&a,&b);
if(a>b)
c=b;
else c=a;
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
}
#11
高手快来帮忙啊
#12
用欧几里德算法算出a和b的最大公约数后,用 a*b/最大公约数 就是最小公倍数。
#13
我是这样啊,但我输入12和15之后它怎么多出两行东西.你运行看看
#14
for(;c>0;c--)
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
这段程序不是求最大公约数,而是求所有的公约数。只要在求出第一个公约数的时候加个break语句跳出循环就可。
if(a%c==0&&b%c==0)
printf("greatest common divisor=%d\nlease common multiple=%d\n",c,a*b/c);
getch();
这段程序不是求最大公约数,而是求所有的公约数。只要在求出第一个公约数的时候加个break语句跳出循环就可。
#15
我认为你的错很多
而且你这个只是求最大公数
#include <stdio.h>
main()
{
int m,n,t,b,y;
scanf("%d%d",&m,&n);
for (t=1;t<=m&&t<=n;t++)
{
if(m%t==0&&n%t==0) y=t;
}
if(m>n) b=m;
else b=n;
for (;!(b%m==0&&b%n==0)&&b<=m*n;b++);
printf("%d %d\n",y,b);
getch();
}
而且你这个只是求最大公数
#include <stdio.h>
main()
{
int m,n,t,b,y;
scanf("%d%d",&m,&n);
for (t=1;t<=m&&t<=n;t++)
{
if(m%t==0&&n%t==0) y=t;
}
if(m>n) b=m;
else b=n;
for (;!(b%m==0&&b%n==0)&&b<=m*n;b++);
printf("%d %d\n",y,b);
getch();
}
#16
我写的程序发不上来。。。“请不要发表可能给我们带来伤害的言论,谢谢配合”
#17
#include <iostream.h>
void main()
{
int a,b,min;
cout<<"Please input two number :";
cin>>a>>b;
min=a<b?a:b;
int t=0;
for(int i=2;i<=min;i++)
{
if(a%i==0&&b%i==0)
{
t=i;
}
}
if(t==0)
{
cout<<"No greatest common divisor.\n";
cout<<"Min common times :"<<(a*b)<<endl;
}
else
{
cout<<"The greatest common divisor is :"<<t<<endl;
cout<<"Min common times :"<<(a*b)/t<<endl;
}
cout<<endl;
}
void main()
{
int a,b,min;
cout<<"Please input two number :";
cin>>a>>b;
min=a<b?a:b;
int t=0;
for(int i=2;i<=min;i++)
{
if(a%i==0&&b%i==0)
{
t=i;
}
}
if(t==0)
{
cout<<"No greatest common divisor.\n";
cout<<"Min common times :"<<(a*b)<<endl;
}
else
{
cout<<"The greatest common divisor is :"<<t<<endl;
cout<<"Min common times :"<<(a*b)/t<<endl;
}
cout<<endl;
}