用 C++ 求可被 2 和 7 整除的前 N 個自然數之和


在這個問題中,我們得到了一個數 N。我們的任務是求出前 N 個自然數中能同時被 2 和 7 整除的數之和。

那麼,這裡我們得到一個數 N,程式要找到 1 到 N 之間能同時被 2 和 7 整除的數之和。

我們舉個例子來理解這個問題,

輸入

N = 10

輸出

37

說明

sum = 2 + 4 + 6 + 7 + 8 + 10 = 37

因此,解決問題的基本思路是找出所有能同時被 2 或 7 整除的數。這個和為 −

Sum of numbers divisible by 2 + sum of numbers divisible by 7 - sum of number divisible by 14.

所有這些和可以使用等差數列公式生成,

S2 = [( (N/2)/2) * ( (2*2)+((N/2-1)*2) )]
S7 = [( (N/7)/2) * ( (2*7)+((N/7-1)*7) )]
S14 = [( (N/14)/2) * ( (2*14)+((N/2-1)*14) )]

最終和,

Sum = S2 + S7 - S14
Sum = [( (N/2)/2) * ( (2*2)+((N/2-1)*2) )] + [( (N/7)/2) * ( (2*7)+((N/7-1)*7) )] - [( (N/14)/2) * ( (2*14)+((N/2-1)*14) )]

示例

說明解決方案的程式,

 線上演示

#include <iostream>
using namespace std;
int findSum(int N) {
   return ( ((N/2)*(2*2+(N/2-1)*2)/2) + ((N/7)*(2*7+(N/7-1)*7)/2) - ((N/14)*(2*14+(N/14-1)*14)/2) );
}
int main(){
   int N = 42;
   cout<<"The sum of natural numbers which are divisible by 2 and 7 is "<<findSum(N);
   return 0;
}

輸出

The sum of natural numbers which are divisible by 2 and 7 is 525

更新日期:2020-08-05

122 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告