固定和求連續整數範圍

請找出連續的正整數其和為任意一個指定的正整數:

例如:給定一正整數 42,下面的三組連續正整數加起來都是 42 對了,42 = 42 就不要列出來了。

怎樣運用 C 語言來製作這樣子的程式呢?

  1. 直接測試法:假設指定的和為 N

    我們由 1 開始測試, 看看 1 + 2 是否大於或是等於 N, 再看看 1 + 2 + 3 是否大於或是等於 N, 如此每次增加一個數字, 直到 1 + 2 + 3 + ... + i >= N 為止, 如果等於 N 的話, 就將這一串數字列印出去;

    接下去以 2 為第一個數字開始測試, 看看 2 + 3, 2 + 3 + 4, .... 2 + 3 + 4 + ... + j;

    如此一直做到 N/2 時結束

  2. 改進效率:

    上面所描述的方法很明顯地有一些浪費, 比方說以 1 為開始的時候已經做過 2 + 3 + 4 的運算, 到了以 2 為開始的時候會又重複做一遍, 這是相當浪費的, 所以我們可以好好規劃一下, 不要發生那麼多次的重複:

    最主要的關鍵點在於:

    詳細的作法請參考下列測試:

    請注意上面解釋中顏色對應的關係

程式要求:

  1. 可以使用 time.h 中的 clock() 函式來求得目前程式執行的時間: 算出來時間的單位是秒。

  2. 請儘量用函式來簡化邏輯

  3. 請以 ANSI C 語法及函式庫來製作

範例執行程式

程式設計課程 首頁

製作日期: 99/10/19 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@cs.ntou.edu.tw