| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1213 人关注过本帖
标题:【求助】"输入两个数 求最小公倍数和最大公约数"
只看楼主 加入收藏
食饭排队
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-11-3
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:13 
【求助】"输入两个数 求最小公倍数和最大公约数"
请帮忙看看哪里有错,在WIN-TC上一闪就没了。
#include<stdio.h>
void main()
{
 char letter='t';
 int x,y,n=1,m=1,N,M,b,c;
 float B,C;
 for(;letter=='t'||'T';)
  {
  printf("please enter x and y:");
  scanf("%d%d",&x,&y);
    N=x-1;
    M=y-1;
   for(;;)
   {
    b=x*n;
    c=y*m;
    if(b%y==0&&c%x==0)
     {
      if(b>=c) printf("最小公倍数=%d\n",c);
      else printf("最小公倍数=%d\n",b);
      break;
     }
   else n++;m++;continue;
   }
    for(B=x/N,C=y/M;;)
     {if(x%N==0&&y%M==0)
      {
       if(N>=M) printf("最大公约数=%d",N);
       else printf("最大公约数=%d",M);
       break;
      }
      else N=N-1;M=M-1;
     }
     printf("continue?Y/N");
     scanf("%f",&letter);
  }
getch();}
搜索更多相关主题的帖子: 输入 最小公倍数 最大公约数 
2009-11-07 10:36
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
程序不对
2009-11-07 10:55
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:1 
回复 楼主
按你的思路改的:
程序代码:
#include<stdio.h>
void main()
{
char letter='y';
int x,y,n=1,m=1,N,b,c;
int B,C;                        /* float 改 int */

for(;letter=='y'|| letter=='Y';)
  {
   printf("please enter x and y:");
   scanf("%d%d",&x,&y);
   N=x-1;
                                 /* 去掉了变量M         */
   for(;;)
     {
      b=x*n;
      c=y*m;
      if(b%y==0&&c%x==0)
        {
         if(b>=c) printf("最小公倍数=%d\n",c);
         else printf("最小公倍数=%d\n",b);
         break;
        }
      else {n++,m++;continue;}
     }
    for(;;)                     /* 去掉了B=x/N,C=y/M   */
      {
       if(x%N==0&&y%N==0)       /* x 和 y 都除以N      */
         {
          printf("最大公约数=%d",N);
          break;
         }
       else N=N-1;
      }
     getchar();                 /* 接收残留下的换行符 */
     printf("\n\ncontinue?Y/N");
     scanf("%c",&letter);       /* %f 改 %c,字符型输入 */
  }
}


努力—前进—变老—退休—入土
2009-11-07 11:13
食饭排队
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-11-3
收藏
得分:0 
回复 3楼 UserYuH
谢谢指教!但我试了下 好像是错的~~~
2009-11-07 11:43
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
测试没问题。
你测试是答案错还是程序编译错?

[ 本帖最后由 UserYuH 于 2009-11-7 11:48 编辑 ]

努力—前进—变老—退休—入土
2009-11-07 11:46
食饭排队
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-11-3
收藏
得分:0 
回复 5楼 UserYuH
我的目的是求最小公倍数和最大公约数哦~~但你的好像求不了最大公约数~~还有为什么我的程序在WIN-TC上一闪就没了啊?
2009-11-07 11:58
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
你的程序在处理最大公约数时出错退出,scanf("%f",&letter);在这语句上也会出错退出,所以一闪而过。
你输入x小于y结果就不对了,我改的程序再多加一条判断,让x始终比y大,
   if(x<y)x^=y,y^=x,x^=y;
·
程序代码:
#include<stdio.h>
void main()
{
char letter='y';
int x,y,n=1,m=1,N,b,c;
int B,C;                        /* float 改 int */

for(;letter=='y'|| letter=='Y';)
  {
   printf("please enter x and y:");
   scanf("%d%d",&x,&y);
   if(x<y)x^=y,y^=x,x^=y;
   N=x-1;
                                 /* 去掉了变量M         */
   for(;;)
     {
      b=x*n;
      c=y*m;
      if(b%y==0&&c%x==0)
        {
         if(b>=c) printf("最小公倍数=%d\n",c);
         else printf("最小公倍数=%d\n",b);
         break;
        }
      else {n++,m++;continue;}
     }
    for(;;)                     /* 去掉了B=x/N,C=y/M   */
      {
       if(x%N==0&&y%N==0)       /* x 和 y 都除以N      */
         {
          printf("最大公约数=%d",N);
          break;
         }
       else N=N-1;
      }
     getchar();                 /* 接收残留下的换行符 */
     printf("\n\ncontinue?Y/N");
     scanf("%c",&letter);       /* %f 改 %c,字符型输入 */
  }
}


[ 本帖最后由 UserYuH 于 2009-11-7 12:25 编辑 ]

努力—前进—变老—退休—入土
2009-11-07 12:12
雪鹰独行
Rank: 2
等 级:论坛游民
帖 子:40
专家分:10
注 册:2009-7-18
收藏
得分:1 
你这个思路没怎么见过,求最大公约数不是辗转相除吗,最小公倍数就是两数之积除以最大公约数。
2009-11-07 12:33
雪鹰独行
Rank: 2
等 级:论坛游民
帖 子:40
专家分:10
注 册:2009-7-18
收藏
得分:0 
if (x<y)  t=x;x=y;y=t;
r=x%y;
while(r!=0)
x=y;y=r;r=x%y;
然后x就是最大公约数,
最小公倍数就是两数之积与最大公约数之商
2009-11-07 12:36
hnliji1107
Rank: 4
等 级:业余侠客
帖 子:53
专家分:216
注 册:2009-10-23
收藏
得分:1 
#include "stdio.h"
int main(void)
{
    int m,n,r,m1,n1;
    printf(" input the two datas:");
    scanf("%d,%d",&m,&n);
    while(m<n)
    {
        printf(" must m>=n,input again:");
        scanf("%d,%d",&m,&n);
    }
    m1=m;
    n1=n;
    r=m%n;
    while(r!=0)
    {
        r=m%n;
        m=n;
        n=r;
    }
    printf(" the l.c.m of %d,%d is %d\n the g.c.d of %d,%d is %d\n ",m1,n1,m1*n1/m,m1,n1,m);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
2009-11-07 13:19
快速回复:【求助】"输入两个数 求最小公倍数和最大公约数"
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026977 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved