首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

自然數對判斷:和與差均為完全平方數的數學性質驗證

     編輯:關於C語言

問題描述

給定 A > B ≥ 0,若 A+B 和 A-B 都是完全平方數,則稱 (A,B) 為自然數對。輸入 T 組測試數據,每組輸出 YES 或 NO。A+B ≤ 2^31。

完全平方數判斷

計算整數平方根 `r = (int)sqrt(x)`,若 `r*r == x` 則為完全平方數。需包含 `` 並鏈接數學庫(`-lm`)。

代碼實現

#include <stdio.h>
#include <math.h>

int is_perfect_square(int m);

int main() {
    int n, a, b;
    scanf("%d", &n);

    while (n--) {
        scanf("%d %d", &a, &b);
        if (is_perfect_square(a-b) && is_perfect_square(a+b))
            printf("YES");
        else
            printf("NO");
        if (n > 0) printf("\n");
    }
    return 0;
}

int is_perfect_square(int m) {
    int r = (int)sqrt(m);
    return r * r == m;
}

測試樣例

輸入:

2
17 8
3 1

輸出:

YES
NO

17+8=25=5²,17-8=9=3² → YES。3+1=4=2²,3-1=2 非平方數 → NO。

數學延伸

此類數對與勾股數相關:設 A+B=x², A-B=y² → A=(x²+y²)/2, B=(x²-y²)/2。x,y 同奇偶性時 A,B 為整數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved