#include "stdio.h" struct common{}; int m; int n; void div(); void sub(); int exh();
void div() { int x; int a, b; a = m; b = n; if (a > b) { x = a%b; } else { x = a; a = b; b = x; x = a%b; } while (x != 0) { a = b; b = x; x = a%b; } printf_s("最大公约数是%d。\n", b); }
void sub() { int a, b; a = m; b = n; while (a!=b) { if (a > b) { a = a - b; } else { b = b - a; } } printf_s("最大公约数是%d。\n", a); }
int exh() { int x, y=0; int a, b; a = m; b = n; if (a>b) { for ( x = b; x > 0; x--) { if (a%x == 0 && b%x == 0) { y = x; printf_s("最大公约数是%d。\n", y); return 0; } } } else { for (x = a; x > 0; x--) { if (a%x == 0 && b%x == 0) { y = x; printf_s("最大公约数是%d。\n", y); return 0; } } } return 0; }
int main() { int select = 1; int i; while (select) { printf_s("请输入两个数(并以英文逗号隔开):"); scanf_s("%d,%d", &m, &n); printf_s("\n"); printf_s(" *********************************************************\n"); printf_s(" # #\n"); printf_s(" # 求两数最大公约数 #\n"); printf_s(" # #\n"); printf_s(" *********************************************************\n"); printf_s(" # #\n"); printf_s(" # 0.辗转相除法 1.相减法 #\n"); printf_s(" # #\n"); printf_s(" # 2.穷举法 3.退出系统 #\n"); printf_s(" # #\n"); printf_s(" *********************************************************\n"); printf_s("\n"); printf_s(" 请选择您需要的操作序号(0-3)按回车确认:"); scanf_s("%d", &i); printf_s("\n"); switch (i) { case 0: div(); break; case 1: sub(); break; case 2: exh(); break; case 3: select = 0; break; default: printf_s("请在0-3之间选择\n"); break; } } return 0; }
|