NO.19【婳骨】の最大公因数和最小公倍数求解

题目

	公因数与公倍数
	设计一个程序, 输入两个整数n,m. 
	输出它们的最大公因数和最小公倍数
	样例输入:
	10, 15
	样例输出:
	5, 30

代码

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#pragma warning(disable:4101)
#pragma warning(disable:6001)

void In(double* a);	//对输入数据进行判断
int main()
{
	double _a, _b;	//所输入的两个数字
	int a, b;	//所输入的两个数字
	int i, j, k;	//用于循环
	int num1, num2;	//计算因数与倍数时所用数字
	int factor, multiple;	//最大公因数与最小公倍数
	int temp;	//用于数字交换的临时变量
	int choice;	//存放选项
	system("title 【婳骨】の最大公因数和最小公倍数求解");
	while(1)
	{
		printf("欢迎来到本系统~!\n首先请输入两个整数!\n");
		while (1)
		{
			printf("请输入第一个整数:\n");
			In(&_a);
			if (_a < 1)
			{
				printf("不行啊,必须输入大于0的整数呢,请重新输入!\n");
			}
			else break;
		}
		while (1)
		{
			printf("请输入第二个整数:\n");
			In(&_b);
			if (_b < 1)
			{
				printf("不行啊,必须输入大于0的整数呢,请重新输入!\n");
			}
			else break;
		}
		a = (int)_a;
		b = (int)_b;
		if (a < b)
		{
			temp = a;
			a = b;
			b = temp;
		}
		for (i = 1; i < a; i++)
		{
			if ((a % i) == 0)	//此时i为a的因数
			{
				num1 = i;
			}
			for (j = 1; j < b; j++)
			{
				if ((b % j) == 0)	//此时j为b的因数
				{
					num2 = j;
					if (num1 == num2)
					{
						factor = num1;
					}
				}
			}
		}
		printf("%d与%d的最大公因数为%d\n", a, b, factor);
		for (k = 1; k < a * b + 1; k++)
		{
			if (k % a == 0)
			{
				if (k % b == 0)
				{
					multiple = k;
					printf("%d与%d的最小公倍数为%d\n", a, b, multiple);
					break;
				}
			}
		}
		printf("是否重新录入?(如需重新录入请按0,否则按任意键退出)\n");
		choice = getch();
		if (choice == '0')
		{
			system("cls");
		}
		else 
		{
			printf("谢谢使用!\n");
			break;
		}
	}
	system("pause");
	return 0;
}
void In(double* a)	//对输入数据进行判断
{
	do
	{
		if (scanf_s("%lf", a) == 1)
		{
			break;
		}
		char choice;
		while ((choice = getchar()) != '\n' && choice != EOF);
		printf("输入的不是数字!\n");
	} while (scanf_s("%lf", a) != 1);
}

部分运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值