公因数与公倍数

设计一个程序, 输入两个整数n,m. 输出它们的最大公因数和最小公倍数

样例输入:
10, 15
样例输出:
5, 30

#include <iostream>
#include <conio.h>
#include <math.h>
//定义啷个宏,方便后面操作
#define MAX(a,b) (a>b)?a:b
#define MIN(a,b) (a<b)?a:b
using namespace std;
/**程序窗口*/
void winos();
//判断输入是否合法(范围  非数字判断  )
void User_Input(int* a);
int main()
{
	while (1)
	{
		int a = 0, b = 0;//假设这两个数字是最大公约和最小公倍数  
		int Remainder;  // 余数
		int m, n;  // 用户输入
		cout << "请输入第一个数字\n";
		User_Input(&m);
		cout << "请输入第二个数字\n";
		User_Input(&n);
		//使用宏替换的方式 给 a和 b赋值
		a = MAX(m, n);
		b = MIN(m, n);
		//然后判断,如果两个数取余不是0进去循环
		while (a % b != 0)
		{
			//获得余数
			Remainder= a % b;
			//a拿到b的值
			a = b;
			//b拿到余数
			b = Remainder;
		}
		//打印结果
		cout << "最大公约数为:" << b << endl;
		cout << "最小公倍数为:" << m * n / b << endl;
		cout << "还要继续玩吗? (任意键继续玩,按n退出程序)\n";
		char ch = ' ';
		if (ch = _getch(), ch == 'n' || ch == 'N')
		{
			break;
		}
	}
	system("pause");
	return 0;
}
//判断输入是否合法(范围  非数字判断  )
void User_Input(int* a)
{
	do {
		//如果输入函数返回值是1,代表输入正确  跳出循环
		if (scanf("%d", a) == 1)
		{
			break;
		}
		//如果返回值不是1,执行下面的,
		char choice;
		//循环字符缓冲区内容
		while ((choice = getchar()) != '\n' && choice != EOF);
		printf("输入的不是数字!请重新输入       ");
	} while (scanf("%d", a) != 1);
}
void winos()
{
	system("title 做题");			//设置CMD窗口 标题
	system("color 4E");					//窗口显示颜色
	system("mode con cols=65 lines=35");//设置窗口大小
	printf("\t\t※当 前 时 间※\n\n");	//窗口显示时间
	printf("\t\t");						//为了好看
	system("date /T");					// 窗口显示时间
	printf("\t\t");						//为了好看
	system("TIME /T");					// 窗口显示时间
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c语言,c++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值