這是個人第一篇博客。但願本身之後也能堅持下去,來記錄我學習C++的一些歷程。ios
今天作ACM題,是求最小公倍數和最大公因數的。用展轉相除法作。我一開始用int型,發現測試普通數據時均得出正確答案。可是用題目中的測試數據30000000,50000000的時候,最大公約數是沒有問題,但最大公倍數顯示是負數。後來發現是int型的存儲空間不夠。換成long或者long long型就能夠。函數
而後還學會了怎樣用EOF結束程序。必須在C的環境下,用while(scanf("%d",&a)!=EOF)完成。學習
如下是個人代碼:測試
#include<iostream> #include<cstdio>//用有關C程序的函數時,需加此頭文件 using namespace std; main() { long a,b,c,d,num;//a,b爲測試數 while(scanf("%d %d",&a,&b)!=EOF)//輸入EOF結束,必須a,b均在scanf裏。以前寫的時候,b在while中,不成功 { num=a*b;//爲求最小公倍數作準備。最小公倍數=兩數乘積/最小公約數 for(;b!=0;)//展轉相除。看網上代碼,須要先比較大小,但我測試,不比較也可。 { c=a%b; a=b; b=c; } d=num/a; cout<<a<<" "<<d<<endl;//a爲最大公約數,d爲最小公倍數。 } }
學習小結:瞭解了關於展轉相除法求最大公約數和最小公倍數的方法spa
瞭解了C++中如何用EOF結束程序 初步瞭解了long型,以及long long型的相關知識。