求最大公約數與求最小公倍數問題
阿新 • • 發佈:2018-12-16
求最大公約數可以使用輾轉相除法: 假設a > b > 0,那麼a和b的最大公約數等於b和a%b的最大公約數,然後把b和a%b作為新一輪的輸入。 由於這個過程會一直遞減,直到a%b等於0的時候,b的值就是所要求的最大公約數。 比如: 9和6的最大公約數等於6和9%6=3的最大公約數。 由於6%3==0,所以最大公約數為3。
求最小公倍數用a*b等於l,l 除以a b的最大公約數就得a b的最小公倍數。
#include<iostream> #include<cmath> int a=1000000000,b=1000000000; using namespace std; int main() { int a,b,t,l; cin>>a>>b; //l=a*b; 求最小公倍數 while(a%b!=0) { if(a<b) { t=a; a=b; b=t; } a=a%b; } //b=l/b; 求最小公倍數 cout<<b; return 0; }