输入两个个数,求,这两个数的最大公约数和最小公倍数

ONE~ 2019-06-18 03:27:21
这个程序当运行到输入两个数之后就没有下一步了,怎么回事?请大佬指点一下 #include <stdio.h> #include <math.h> int maxyue(int i,int j) { int k=1; if(i==j) { return (j); } if(i>j) { while(k!=0) { k=i%j; i=j; j=k; } return (j); } else { while(k!=0) { k=j%i; j=i; i=k; } return (i); } } int minbei (int p,int q) { int i,m,n; if(p==q) return (p*p); else { do { for(i=1;;i++) { m=p; m=m*i; } for(i=1;;i++) { n=q; n=n*i; } }while(p!=q); return (p); } } void main() { int i,j; int m,n; printf("请输入m,n的值:\n"); scanf("%d%d\n",&m,&n); i=maxyue(m,n); j=minbei(m,n); printf("输出最大公约数,最小公倍数的值:\n"); printf("最大公约数=%d,最小公倍数=%d\n",i,j); }
...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ONE~ 2019-06-26
  • 打赏
  • 举报
回复
引用 1 楼 csucxy 的回复:
scanf("%d%d\n", &m, &n);
双引号中去掉\n
如果实在要这么有个性,输入两个数后,输入Ctrl+Z。
另外
for (i = 1;; i++)
{
m = p;
m = m * i;
}
for (i = 1;; i++)
{
n = q;
n = n * i;
}
这是两个死循环。
好的👌👌👌👌👌,
自信男孩 2019-06-18
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>

int maxyue(int m,int n)
{
int tmp, k;

if (m < n) {
tmp = m;
m = n;
n = tmp;
}
while ((k = m % n)) {
m = n;
n = k;
}

return n;

/*
int k=1;

if(i==j)
{
return (j);
}
if(i>j)
{
while(k!=0)
{
k=i%j;
i=j;
j=k;
}
return (j);
}
else
{
while(k!=0)
{
k=j%i; j=i; i=k;
}
return (i);
}
*/
}

int minbei (int m, int n)
{
/*
int i,m,n;
if(p==q)
return (p*p);
else
{
do
{
for(i=1;;i++) //死循环
{
m=p;
m=m*i;
}
for(i=1;;i++) //死循环
{
n=q;
n=n*i;
}
}while(p!=q);
return (p);
}
*/
}

int main(void)
{
int i,j;
int m,n;

printf("请输入m,n的值:\n");
//scanf("%d%d\n",&m,&n);
scanf("%d%d", &m, &n);
i=maxyue(m,n);
printf("i = %d\n", i);
//j=minbei(m,n);
j = m * n / i;
printf("输出最大公约数,最小公倍数的值:\n");
printf("最大公约数=%d,最小公倍数=%d\n",i,j);

return 0;
}
csucxy 2019-06-18
  • 打赏
  • 举报
回复
scanf("%d%d\n", &m, &n);
双引号中去掉\n
如果实在要这么有个性,输入两个数后,输入Ctrl+Z。
另外
for (i = 1;; i++)
{
m = p;
m = m * i;
}
for (i = 1;; i++)
{
n = q;
n = n * i;
}
这是两个死循环。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧