大整數開方技巧
阿新 • • 發佈:2018-12-17
題目描述:
輸出所有形如aabb的四位完全平方數(即前兩位數字相等,後兩位數字也相等)
分析:
floor(x)函式:返回不超過x的最大整數。 判斷條件:一個數開方後取整,如果平方還是它本身的話,證明是完全平方數。 注意: 大整數開方的時候,由於誤差的影響,整數1變成了0.999999999,這樣算得的結果就會是0而不是1,為了減小誤差影響,一般採用四捨五入的方法,即:floor(sqrt(x)+0.5) (小數部分為0.5的數也會受到浮點誤差的影響,等後面學習了之後再來更新)。
程式碼:
#include<iostream> #include<string> #include<cstring> #include<Windows.h> #include<cmath> using namespace std; int main() { int a, b, n; for (int i = 1;i <= 9;i++) { for (int j = 0;j <= 9;j++) { n = 1100 * i + 11 * j; a = floor(sqrt(n) + 0.5); if (a*a == n) cout << n << ' '; } } system("pause"); return 0; }