C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で2と7で割り切れる最初のN個の自然数の合計


この問題では、数Nが与えられます。私たちのタスクは、2と7で割り切れる最初のN個の自然数の合計を見つけることです。

したがって、ここでは数値Nが与えられ、プログラムは2と7で割り切れる1からNまでの数値の合計を見つけます。

問題を理解するために例を見てみましょう

入力

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.

これらの合計はすべて、A.P。式を使用して生成できます

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

  1. 最初のn個の自然数の二乗和のためのC++プログラム?

    この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin    sum := 0    for i in range 1 to n, do       sum := sum + i^2 &

  2. 数値「x」または数値「y」で割り切れる最初のn個の自然数の合計を見つけるPHPプログラム

    数「x」または数「y」で割り切れる最初のn個の自然数の合計を見つけるには、コードは次のようになります- 例 <?php function sum_of_nums($n_val, $x_val, $y_val) {    $val_1; $val_2; $val_3;    $val_1 = floor(((int)$n_val / $x_val)) * (2 * $x_val + (int)((int)$n_val / $x_val - 1) * $X) / 2;    $val_2 = floor(((int)$n_val /