辗转相除法

复制代码
 1 #include <cstdio>
 2 int gcd(int a,int b)
 3 {
 4     return b==0?a:gcd(b,a%b);
 5 }
 6 int gcd1(int a,int b)
 7 {
 8     if(a==0)return b;
 9     if(b==0)return a;
10     if(a<b) return gcd(a,b-a);
11     else return gcd(b,a-b);
12 }
13 int gcd3(int a,int b)
14 {
15     while(a!=0&&b!=0){
16         if(a<b) b=b-a;
17         else {int t;t=a;a=b;b=t-b;}
18     }
19     if(a==0)return b;
20     else return a;
21 }
22 int main(){
23     int a;int b;
24     while(scanf("%d%d",&a,&b)!=EOF){
25         printf("%d  %d  %d\n",gcd1(a,b),gcd(a,b),gcd3(a,b));
26     }
27 
28     return 0;
29 }
30 #include<stdio.h>
31 int main()
32 {
33     int a,i,b,s,c,max,min,d;
34     while(scanf("%d%d",&a,&b)!=EOF)
35     {
36         if(a<b)
37         {
38             s=a;
39             a=b;
40             b=s;
41         }
42         if(b==0&&a!=0)
43             printf("%d %d\n",0,b);
44         if(a==b)
45             printf("%d %d\n",a,b);
46         max=a;
47         min=b;
48         if(a>b&&b!=0)
49         {
50             while(a!=0&&b!=0)
51             {
52                 c=a;
53                 a=a%b;
54                 if(a!=0)
55                 {
56                     c=a;
57                     b=b%a;
58                 }
59                 if(b!=0)
60                 {
61                     c=b;
62                 }
63             }
64             printf("%d %d\n",c,max*min/c);
65         }
66     }
67     return 0;
68 }
复制代码

 

posted @   deepwzh  阅读(440)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示