a1455997273
2021-05-14 16:57
采纳率: 100%
浏览 55

写一个求最小公倍数的函数的问题

要求通过最大公约数的方程来求,但方程嵌套进去不对。

#include<stdio.h>
int main() 
{
    int a,b;
    int lcm(int u,int v);
    int gcd(int u,int v);
    printf("输入两个正整数a,b:");
    scanf("%d %d",&a,&b);
    printf("两数的最小公倍数为:");
    lcm(a,b); 
}
int lcm(int u,int v)//求最小公倍数的函数 
{
    int gcd(int u,int v);
    int lcm;
    lcm=u*v/gcd(u,v);
    printf("%d",lcm);
}
int gcd(int u,int v)//求最大公约数的函数 
{
    int i,j,k;
    while(u%v!=0)
    {
        while(u<v)
        {
            i=u;
            u=v;
            v=i;
        }
        u=u%v;
    }
    printf("%d",v);
}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • CSDN专家-link 2021-05-14 17:03
    已采纳

    你这几个子函数写在main下面不行吧

    已采纳该答案
    打赏 评论
  • CSDN专家-三岁丫 2021-05-14 17:06

    问题一:应该是 if (u < v) ,不用写 while 的吧

    打赏 评论
  • #include <iostream>
    #include <fstream>
     
    using namespace std;
    int gcd(int,int);
    int main(int argc,char * argv[])
    {
        int x,y;
        while(cin>>x>>y)
        {
            cout<<x/gcd(x,y)*y<<endl;
        }
        system("pause");
        return 0;
    }
    int gcd(int x,int y)
    {
        while(x!=y)
        {
            if(x>y) x=x-y;
            else
                y=y-x;
        }
        return x;
    }
    打赏 评论
  • /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        /*
        	最大公约数,最小公倍数
        	
        	2,3 ,6,1
        	4,8   8,4
        */
        int n,m,p,t,i;
        printf("输入2个整数(逗号分隔):");
        scanf("%d,%d",&n,&m);
        //求最大公约数
        if(n<m)//确保n>m
        {
        	t=n;
        	n=m;
        	m=t;	
        }
        for(i=m;i>=1;i--)
        {
        	if(n%i==0 && m%i==0){
        		p=i;	
        		break;
        	}	
        }
        printf("%d和%d的最大公约数是%d\n",n,m,p);
        printf("%d和%d的最小公倍数是%d\n",n,m,m*n/p);
        
        
        
        
    }
    打赏 评论
  • 張公㜽 2021-05-14 17:06

    把 int lcm(int u,int v);放到int main()和#include <stdio.h>中间
        int gcd(int u,int v);

    打赏 评论
  • 有问必答小助手 2021-05-14 17:16

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论
  • qfl_sdu 2021-05-14 17:37

    函数在使用前没有声明,main找不到函数,有两种方式修改:

    一是:把int lcm(int u,int v)和int gcd(int u,int v)这两个函数的全部内容放在main()函数前面;

    第二种方法是,在main()函数前面加上以下两句:

    int lcm(int u,int v);
    int gcd(int u,int v);

    如有帮助,请采纳一下,谢谢。

    打赏 评论
  • a1455997273 2021-05-14 17:42

    这个程序的问题主要是子函数lcm里的lcm=u*v/gcd(u,v);有问题。因为我将lcm=u*v/gcd(u,v);写成lcm=u*v;时,主函数中lcm结果就正确了。但是子函数lcm里的lcm方程加入子函数gcd后,结果就不正确了。

     

    打赏 评论
  • a1455997273 2021-05-14 17:42

    因此想问问为什么嵌套函数会出现这个问题

    打赏 评论

相关推荐 更多相似问题