C語言中求1到N之間能被2或5整除的數之和


求1到N之間能被2或5整除的自然數之和,可以先求1到N之間能被2整除的數之和,再求1到N之間能被5整除的數之和,將兩者相加,再減去1到N之間能被10整除的數之和,即可得到結果。這種方法高效,適用於求解較大N值的情況。

有些人可能會想到使用迴圈和條件語句來累加所有能被2或5整除的數,但這方法效率低下,時間複雜度為O(n)。這意味著對於較大的n值,程式將執行n次迴圈,從而降低程式效率。

求能被2整除的n個自然數之和的公式

Sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2

求能被5整除的n個自然數之和的公式

Sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2

求能被10整除的n個自然數之和的公式

Sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2

預期輸出

Sum = Sum2 + Sum5 - Sum10

示例

#include <stdio.h>
int main() {
   int n = 25;
   long int sum2, sum5, sum10;
   sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2;
   sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2;
   sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2;
   long int sum = sum2 + sum5 - sum10;
   printf("Sum is %d", sum);
   return 0;
}

輸出

Sum is 201

更新於:2019年8月9日

327 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.