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

C語言習題:尋找滿足完全平方數條件的整數

     編輯:關於C語言

題目數學轉換

設該整數為 n:

  • n + 100 = x²
  • n + 268 = y² (100+168=268)
  • 相減:y² - x² = 168 → (y-x)(y+x) = 168

暴力搜尋實作 (教學版)

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

int main(void) {
    for (long n = 1; n < 100000; n++) {
        long x = sqrt(n + 100);
        long y = sqrt(n + 268);
        if (x*x == n + 100 && y*y == n + 268)
            printf("%ld\n", n);
    }
    return 0;
}

輸出結果

21
261
1581

數學優化解法

因式分解 168 = 2³ × 3 × 7,列舉因子對 (d, 168/d) 同奇偶性者,解得 y = (d + 168/d)/2、x = (168/d - d)/2,再反推 n = x² - 100。僅需檢查少數因子對,效率大幅提升。

驗證

  • 21 + 100 = 121 = 11²,21 + 268 = 289 = 17² ✓
  • 261 + 100 = 361 = 19²,261 + 268 = 529 = 23² ✓
  • 1581 + 100 = 1681 = 41²,1581 + 268 = 1849 = 43² ✓
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved