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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP