C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。

C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

大家好,又见面了,我是你们的朋友全栈君。

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

  • 方法一:短除法

理论参考:百度知道

#include <stdio.h>
int main() { 
   
	int m, n;  // 两个输入的数
	int x = 1, y;  // x 是最大公约数,y是最小公倍数
	int i = 2;  // 累乘因子,从 2 开始

    printf("请输入 m 和 n:\n");
 	scanf("%d%d", &m, &n);

	// 将输入的两个数调整位置,m 是较大的那个数,n 是较小的那个数
	if (m < n) { 
   
		m = m + n;
		n = m - n;  // m(m + n) - n(n) = m
		m = m - n;  // m(m + n) - n(m) = n
	}

	if (m % n == 0) { 
     // 两个数成倍数
		printf("最大公约数:%d\n最小公倍数:%d\n", n, m);
	} else { 
     // 不成倍数
	 	// 计算最大公约数
		while (i < n) { 
     // 当累乘因子小于较小值时,继续计算
			if (m % i == 0 && n % i == 0) { 
     // 同时为两个数的乘法因子
				m /= i;
				n /= i;
				x *= i;
			} else { 
   
				i++;
			}
		}
		// 计算最小公倍数
		y = x * m * n;
		printf("最大公约数:%d\n最小公倍数:%d\n", x, y);
	}
}
  • 方法二:遍历法
# include<stdio.h>
int main()
{ 
   
	int m, n;  // 两个输入数
	int x, y;  // x 为最大公约数,y 为最小公倍数
	int min, max;  // max 为两个输入数中,较大的一个,min 为较小的一个
	int i;  // 用于 for 循环遍历
	
	printf("请输入 m 和 n:\n");
	scanf("%d %d", &m, &n);

	min = m > n ? n : m;
	max = m > n ? m : n;

	x = 1;  // 公约数初始化设为 1

	if (max % min == 0) { 
     // 两个数是倍数关系
		printf("最大公约数:%d\n最小公倍数:%d\n", min, max);
	} else { 
     // 不成倍数
		// 寻找最大公约数
		for (i = 1; i <= min; i++) { 
     // 从 1 找到 min
			if (max % i == 0 && min % i == 0) x = i;
		}
		// 寻找最小公倍数
		while (max % m != 0 || max % n != 0) { 
     // 当有一方不能被整除时,继续往后找
			max++;
		}
		y = max;
		printf("最大公约数为:%d\n最小公倍数为:%d", x, y);
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145832.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 物联网的架构_物联网的应用有哪些

    物联网的架构_物联网的应用有哪些物联网是一个层次化的网络,从下往上可分为四层:感知层、网络层、平台层和应用层。在各层之间,信息不是单向传递的,也有交互或控制。在所传递的信息中,主要是物的信息,包括物的识别码、物的静态信息、物的动态信息等。感知层:感知层是物联网的皮肤和五官,可以识别物体,采集信息。数据采集与感知主要用于采集物理世界中发生的物理事件和数据,包括各类物理量、标识、音频、视频数据。物联网的数据采集涉及传感器、…

    2022年9月18日
    0
  • 简述你对ioc的理解_对剩余价值的理解总结

    简述你对ioc的理解_对剩余价值的理解总结目录一、对IOC和DI的基本认识(一)理解IoC,即“控制反转”(二)IoC具体做什么?(三)理解IoC和DI的关系二、对IOC容器初始化的理解四、对DI依赖注入的理解(主要是)参考书籍、文献和资料一、对IOC和DI的基本认识(一)理解IoC,即“控制反转”在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。理解好…

    2022年9月13日
    0
  • 如何辨认正版mt4_真假鉴别软件

    如何辨认正版mt4_真假鉴别软件在全球零售外汇行业,外汇经纪商使用最多的还是俄罗斯迈达克公司的MT4交易平台,一些不合规的外汇经纪商也对MT4十分热衷,这使市场上几千块一个的盗版MT4日益猖獗,致使一部分交易者因此遭受一些不必要的利益侵害。那么MT4。fOrex6。cc的特点是什么?如何判别一个MT4软件是否是盗版?今天就带你们辨别真假MT4.MT4的优势1.强大的工作表现MT4强大的工作表现,这一点是毋庸置疑的。MT4自2005年7月1日推出以来,就不断的获得市场的认可。下单灵活、界面友好、交易直观等这些都是MT4平台成为外汇市场

    2022年4月19日
    69
  • 【java并发编程】底层原理——用户态和内核态的区别

    【java并发编程】底层原理——用户态和内核态的区别一、背景–线程状态切换的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。synch…

    2022年9月18日
    0
  • python自行实现支付宝证书签名&验签全流程[通俗易懂]

    python自行实现支付宝证书签名&验签全流程[通俗易懂]支付宝Pythonsdk只有密钥签名,没有证书签名,下面是本人自行实现签名全流程证书签名需要新加alipay_root_cert_sn和app_cert_sn两个参数,这两个参数需要解析支付宝根证书(alipay_root_cert_sn)和应用公钥证书(appCerPublicKey_”app_id”.crt)得到:defsn_string():root_file_li=open(alipayRootCert.crt’,’r’).read().split(‘\n\n’)

    2022年5月11日
    45
  • flutter自定义弹窗_app加弹窗

    flutter自定义弹窗_app加弹窗一.Fluttertoast库配置,可参考fluttertoast配置引用1.在pubspec.yaml中配置fluttertoast库,通过Pubget获取fluttertoast的版本,通过Pubupgrade更新,eg:#ThefollowingaddstheCupertinoIconsfonttoyourapplication.#UsewiththeCupertinoIconsclassforiOSstyleicons.cuper

    2022年9月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号