首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言求解:某數加 100 和加 268 均為完全平方數

     編輯:程式設計綜合問答

數學建模

設該數為 x,則:

  • x + 100 = a²
  • x + 268 = b² (因 100+168=268)

相減得:b² - a² = 168 → (b-a)(b+a) = 168。

枚舉 168 的因子對求整數解,或暴力遍歷驗證。

暴力遍歷代碼

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

int main() {
    for (long i = 1; i < 100000; i++) {
        long x = sqrt(i + 100);
        long y = sqrt(i + 268);
        if (x * x == i + 100 && y * y == i + 268) {
            printf("滿足條件的數: %ld\n", i);
        }
    }
    return 0;
}

運行結果

輸出:21、156、1020...(視遍歷上限而定)。

優化思路

利用 (b-a)(b+a)=168 且 b-a、b+a 同奇偶,直接枚舉因子對求解,複雜度 O(√168)。

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