輾轉相除法 氣泡排序
Problem G: 輾轉相除法
Time Limit: 1 Sec Memory Limit: 2 MB
Description
輾轉相除法,也稱歐幾里得演算法,是求最大公約數的演算法。輾轉相除法首次出現於歐幾里得的《幾何原本》(第VII卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》。
兩個整數的最大公約數(亦稱公約數)是能夠同時整除它們的最大的正整數。輾轉相除法基於如下原理:兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如,252和105的最大公約數是21(252 = 21 × 12;105 = 21 × 5);因為252 − 105 = 147,所以147和105的最大公約數也是21。在這個過程中,較大的數縮小了,所以繼續進行同樣的計算可以不斷縮小這兩個數直至其中一個變成零。這時,所剩下的還沒有變成零的數就是兩數的最大公約數。
例如,計算a = 1071和b = 462的最大公約數的過程如下:從1071中不斷減去462直到小於462(可以減2次,即商q0 = 2),餘數是147:
1071 = 2 × 462 + 147.
然後從462中不斷減去147直到小於147(可以減3次,即q1 = 3),餘數是21:
462 = 3 × 147 + 21.
再從147中不斷減去21直到小於21(可以減7次,即q2 = 7),沒有餘數:
147 = 7 × 21 + 0.
此時,餘數是0,所以1071和462的最大公約數是21。
Input
輸入為多行,每行有一對非負整數a,b,且a*b不會超出int型別的資料範圍。輸入至EOF結束。
Output
每行輸出一對a,b的最大公約數和最小公倍數,順序與輸入對應。
從整除定義出發:若a整除b(b除以a沒有餘數),則b是a的倍數,a是b的約數,這裡要求b不為0。因此0是任意整數的倍數(任意整數都是0的約數),但是0不能是約數。
Sample Input
1 1
2 3
2 2
3 2
4 6
7 5
12 6
18 9
24 36
Sample Output
1 1
1 6
2 2
1 6
2 12
1 35
6 12
9 18
12 72
HINT
按照題目描述所給的演算法解題,注意以下幾點:輾轉相除法對兩個數的大小關係有要求,根據倍數和約數的數學定義,一個非0數和0的約數是多少?輾轉相除法的計算過程是符合這種定義的。
#include<stdio.h>
int main()
{
int a,b,c,i,j,k,temp;
while(scanf("%d %d", &a, &b)!=EOF)
{
if(a<b)//a,b按大小排序
{
temp=a;
a=b;
b=temp;
}
c=a*b;//a*b=最大公約數*最小公倍數
while(b!=0)//輾轉相除法 a/b=c....d a=b b=d(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("%d %d\n",a,c/a);
}
return 0;
}
#include<stdio.h>
int main()
{
int i,j,k,m,n,temp;
int a[1010];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)//每次將最大數放在最後
if(a[j]>a[j+1])//而且由於j+1 因此最後i+1個不用遍歷
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<n;i++)
{
if(i==0) printf("%d",a[i]);
else printf(" %d",a[i]);
}
return 0;
}
相關文章
- 輾轉相除法原理
- 輾轉相除法的原理
- 排序——氣泡排序排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 透徹理解輾轉相除法
- 輾轉相除法原理解析
- 排序之氣泡排序排序
- 排序:氣泡排序&快速排序排序
- C++中的輾轉相除法C++
- 【C語言】聊聊輾轉相除法C語言
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序
- java氣泡排序Java排序
- 氣泡排序 java排序Java
- php氣泡排序PHP排序
- Java 氣泡排序Java排序
- Javascript 氣泡排序JavaScript排序
- 氣泡排序(Java)排序Java
- 容器氣泡排序排序
- 氣泡排序1排序
- 氣泡排序法排序
- 基本排序之氣泡排序排序
- 排序:交換排序——氣泡排序法排序
- 氣泡排序筆記排序筆記
- js氣泡排序動畫JS排序動畫
- 陣列氣泡排序陣列排序
- 淺析氣泡排序排序
- python氣泡排序Python排序
- 氣泡排序 bubble sort排序
- 【筆記】氣泡排序筆記排序
- 淺談氣泡排序排序
- 氣泡排序文法排序