输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{
int m,n,t1,t2,k,a=0;
scanf("%d%d",&m,&n);
for(k=2,k<=(m>n?n:m),k++)
{t1=m%k; t2=n%k;
if(t1==0&&t2==0) a=k;
}
if(a=0) printf("m和n没有公约数");
else print("m和n的最大公约数为:%d\n",a);
for(k=1,,k++)
{ t1=(k*m)%n;
if(t1==0)
{ a=k*m;
break;
}
}
printf("m和n的最小公倍数为:%d\n",a);
}
[此贴子已经被作者于2005-1-7 11:52:32编辑过]
----------------解决方案--------------------------------------------------------
不要求一定做到最好,只要求尽量做到最好。
程序存在错误,for 语句的语法有错,除此之外,我觉得程序按预期结果实现了就挺好的了,没有必要非简不可。
----------------解决方案--------------------------------------------------------
非常感谢,呵呵
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int CommonDivisor(int m, int n) /*公约数*/ { if(n==0) return -1; /*0 错*/ if(m%n == 0) return n; else { return CommonDivisor(n, m%n); } }
void main() { int i,j,t; scanf("%d,%d",&i,&j); /*逗号隔开输入*/ t=CommonDivisor(i, j); printf("CommonDivisor: %d\nCommonMultiple: %d\n",t,(i*j)/t); }
[此贴子已经被作者于2005-1-9 2:30:42编辑过]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int CommonDivisor(int m, int n) /*公约数*/ { if(n==0) return -1; /*0 错*/ if(m%n == 0) return n; else { return CommonDivisor(n, m%n); } }
void main() { int i,j,t; scanf("%d,%d",&i,&j); /*逗号隔开输入*/ if(i>j) { t=CommonDivisor(i, j); } else { t=CommonDivisor(j, i); } printf("CommonDivisor: %d\nCommonMultiple: %d\n",t,(i*j)/t); }
[此贴子已经被作者于2005-1-10 21:47:25编辑过]
----------------解决方案--------------------------------------------------------
if(i>j) { t=CommonDivisor(i, j); } else { t=CommonDivisor(j, i); } 楼上真是 画蛇添足,多此一举。哈哈
[此贴子已经被作者于2005-1-11 22:13:55编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <math.h>
void main(){
int j;
int m,n;
int t1,t2,k;
int a,b;
a=b=0;
printf("Please input two numbers:\n");
scanf("%d%d",&m,&n);
j=(m>n)? m:n;
for(k=2;k<=j;k++){
t1=m%k; t2=n%k;
if(t1==0&&t2==0) a=k;
break;
}
if(a==0) printf("m和n没有公约数为\n");
else printf("m和n的最大公约数为:%d\n",a);
for(k=1;k<=n;k++){
t1=(k*m)%n;
if(t1==0){
b=k*m;
break;
}
}
printf("m和n的最小公倍数为:%d\n",b);
}
我稍微修改了一下就得到正确结果了!
刚学两周就写这样,真的很佩服了!:)
要是注意一下一些语句的格式会更棒的!
----------------解决方案--------------------------------------------------------
main()
{
int m,n,p,r,g;
scanf("%d,%d",&n,&m);
p=m*n;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
g=p/m;
printf("%d,%d",m,g) ;
}
----------------解决方案--------------------------------------------------------