次のようになっている場合M
:
M = 1+2+3+5+6+7+9+10+11+13+...+n
QBasic
見つけるためのプログラムは何でしょうかM
。
これまでに次のことを行いましたが、期待値が返されません
INPUT "ENTER A VALUE FOR N"
SUM = 0
FOR I = 1 TO N
IF I MOD 4 = 0
SUM = SUM + I
NECT I
これについてはどうすればよいですか?
ありがとう。
等式演算子を混合しました。これを試して:
INPUT "ENTER A VALUE FOR N"
SUM = 0
FOR I = 1 TO N
IF I MOD 4 <> 0
SUM = SUM + I
NEXT I
プログラムを作成する必要はなく、少なくともループを使用する必要もありません。
最初のn個の自然数の合計:
sum_1 = n * (n + 1) / 2
4 <nの倍数の合計:
sum_2 = 4 * (n / 4) * (n / 4 + 1) / 2 = 2 * (n / 4) * (n / 4 + 1)
結果はsum_1 - sum_2
次のとおりです。
sum = sum_1 - sum_2 = n * (n + 1) / 2 - 2 * (n / 4) * (n / 4 + 1)
注意:/
=整数除算
このスニップは、整数の合計を4で割り切れるn個のスキップ値に計算します。
PRINT "Enter upper value";
INPUT n
' calculate sum of all values
FOR l = 1 TO n
x = x + l
NEXT
' remove values divisible by 4
FOR l = 0 TO n STEP 4
x = x - l
NEXT
PRINT "Solution is:"; x