本帖最後由 鄭繼威 於 2022-12-3 15:15 編輯
讓使用者任意輸入兩個正整數,求它們的最小公倍數。
提示:加入break敘述,使符合條件時,跳出迴圈。
法1- #include<iostream>
- #include<cstdlib>
- using namespace std;
- int main()
- {
- re:
- int x, y, bigger;
- cout<<"請輸入第一個數: ";
- cin>>x;
- cout<<"請輸入第二個數: ";
- cin>>y;
- //取得最大的數字
- bigger=x>y?x:y;
- cout<<x<<"與"<<y<<"的最小公倍數是: ";
- //for 最大的那個數(bigger)~最多跑到x*y
- //每次步伐為bigger比較快找到
- for(int i=bigger; i<=x*y; i+=bigger)
- {
- //判斷有沒有整除( 餘數為0代表整除)
- if(i%x==0 && i%y==0)
- {
- cout<<i<<endl<<endl;
- break;
- }
- }
- goto re;
- system("pause");
- return 0;
- }
複製代碼 法2- #include<iostream>
- #include<cstdlib>
- using namespace std;
- int main()
- {
- re:
- int x,y,tmp;
- cout<<"請依序輸入兩個正整數: ";
- cin>>x>>y;
- int x_copy=x,y_copy=y; //複製一份x,y 免得x,y被取代
- cout<<x<<"與"<<y<<"的"<<endl;
- while(x%y!=0)
- {
- tmp=x%y;
- x=y;
- y=tmp;
- }
- //現在y就是我的最大公因數了
- cout<<"最大公因數:"<<y<<endl<<endl;
- //公式:lcm=a*b/gcd
- cout<<"最小公倍數:"<<x_copy*y_copy/y<<endl;;
-
- goto re;
- system("pause");
- return 0;
- }
複製代碼 |