XまたはYで割り切れる最初のN個の自然数の合計
XまたはYで割り切れるnまでのすべての自然数を合計すると、XまたはYで割り切れるすべての数が選択され、合計を格納する変数に追加されます。
XまたはYで割り切れる最初のN個の自然数の合計を見つけるには、2つの方法があります-
- ループと条件文の使用
- 数式の使用
方法1-ループと条件文の使用
このメソッドは、最大n個の数値をカウントし、XまたはYで割り切れる数値を選択してそれらを追加し、各反復で変数に保存するループを使用します。
サンプルコード
#include <stdio.h> int main(void) { int n = 54; int x = 2 ; int y = 5; int sum = 0; for(int i = 0; i<= n; i++) { if(i%x == 0 || i% y == 0) sum = sum + i; } printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum); return 0; }
出力
sum of 54 natural numbers divisible by 2 and 5 is 881
方法2-式を使用する
この方法では、数式を使用して、数値で割り切れる最初のn個の数値の合計を求めます。
これは、式− SN / X =((N / X)/ 2)*(2 * X +(N / X-1)* X)
を使用して見つけることができます。この式を使用して、xで割り切れるn個の自然数の合計が求められます-S n / x =((n / x)/ 2)*(2 * x +(n / x-1)* x)
この式を使用して、yで割り切れるn個の自然数の合計が求められます-S n / y =((n / y)/ 2)*(2 * y +(n / y-1)* y)
ここで、この式を使用して、xとyで割り切れるn個の自然数の合計が求められます:S n / x * y =((n /(x * y)/ 2)*(2 *(x * y)+(n /(x * y)-1)*(x * y))
ここで、xの合計とyの合計を加算し、2回加算されたx*yの合計を減算します。
サンプルコード
#include <stdio.h> int main() { int n = 54; int x = 2, y = 5; int Sx, Sy, Sxy, sum; Sx = ((n / x)) * (2 * x + (n / x - 1) * x) / 2; Sy = ((n / y)) * (2 * y + (n / y - 1) * y) / 2; Sxy= ((n / (x * y))) * (2 * (x * y) + (n / (x * y) - 1) * (x * y))/ 2; sum = Sx + Sy - Sxy; printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum); return 0; }
出力
sum of 54 natural numbers divisible by 2 and 5 is 881
2番目の方法は、時間の複雑さを意味するループを使用しないため、より優れています。ただし、入力ケースが最初のケースよりも小さい場合は、使用することもできます。ただし、入力が多い場合は、2番目の方法が最適なオプションではありません。
-
C最初のn個の自然数の立方和のプログラム?
この問題では、最初のn個の自然数の立方体の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の3乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム cubeNNatural(n) begin sum := 0 for i in range 1 to n, do sum := sum + i^3 &n
-
最初の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 &