『入门』(递归专题)最大公约数之辗转相除法

This commit is contained in:
James 2020-04-24 23:58:28 +08:00
parent a89cc0ebde
commit b602b04036
8 changed files with 85 additions and 0 deletions

21
1664_gongyue/Readme.md Normal file
View File

@ -0,0 +1,21 @@
# 『入门』(递归专题)最大公约数之辗转相除法
[问题描述]
  辗转相除法又名欧几里德算法Euclidean algorithm乃求两个正整数之最大公因子的算法。它是已知最古老的算法其可追溯至3000年前。而在中国则可以追溯至东汉出现的《九章算术》。
教学案例,必须使用递归函数完成求解!
  输入两个正整数n和m均小于10^9。求解n和m的最大公约数。
[输入格式]
  一行,两个整数,空格间隔。
[输出格式]
  一个整数值n和m的最大公约数。
[输入样例]
12 21
[输出样例]
3

View File

@ -0,0 +1,21 @@
# 『入门』(递归专题)最大公约数之辗转相除法
[问题描述]
  辗转相除法又名欧几里德算法Euclidean algorithm乃求两个正整数之最大公因子的算法。它是已知最古老的算法其可追溯至3000年前。而在中国则可以追溯至东汉出现的《九章算术》。
教学案例,必须使用递归函数完成求解!
  输入两个正整数n和m均小于10^9。求解n和m的最大公约数。
[输入格式]
  一行,两个整数,空格间隔。
[输出格式]
  一个整数值n和m的最大公约数。
[输入样例]
12 21
[输出样例]
3

22
1664_gongyue/main.cpp Normal file
View File

@ -0,0 +1,22 @@
#include <iostream>
using namespace std;
void dg(int bei,int chu){
if(bei%chu==0){
cout<<chu;
return;
}else{
dg(chu,bei%chu);
}
}
int main()
{
int yi,er;
cin>>yi>>er;
if(yi<er){
int u;
u=yi;
yi=er;
er=u;
}
dg(yi,er);
}

BIN
1664_gongyue/main.exe Normal file

Binary file not shown.

1
1664_gongyue/test/in.txt Normal file
View File

@ -0,0 +1 @@
122300 24120

View File

@ -0,0 +1 @@
122222221 87778777

View File

@ -0,0 +1 @@
1025100 1380300

18
1664_gongyue/test/out.txt Normal file
View File

@ -0,0 +1,18 @@
## z:\Chao\src\1664_gongyue\test\in.txt
2020/04/24 ÖÜÎå 23:56:19.01
20
-----------------------------------------------
Process exited after 160 ms with return value 0
## z:\Chao\src\1664_gongyue\test\in2.txt
2020/04/24 ÖÜÎå 23:56:19.01
10001
-----------------------------------------------
Process exited after 90 ms with return value 0
## z:\Chao\src\1664_gongyue\test\in3.txt
2020/04/24 ÖÜÎå 23:56:19.01
300
-----------------------------------------------
Process exited after 80 ms with return value 0