在C ++中可以被2和7整除的前N个自然数之和

在这个问题中,我们得到一个数字N。我们的任务是找到可以被2和7整除的前N个自然数之和。

因此,在这里我们将得到一个数字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.

所有这些总和可以使用AP公式生成,

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