题目
公因数与公倍数
设计一个程序, 输入两个整数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)
{
num1 = i;
}
for (j = 1; j < b; j++)
{
if ((b % j) == 0)
{
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);
}
部分运行结果