2012-12-06 2 views
1

Si nous avons M comme suit:QBasic - Comment trouver cette valeur?

M = 1+2+3+5+6+7+9+10+11+13+...+n

Quel serait le programme QBasic pour trouver M.

Je l'ai fait ce qui suit à ce jour, mais n'est pas moi retourner la valeur attendue

INPUT "ENTER A VALUE FOR N" 
SUM = 0 
FOR I = 1 TO N 
IF I MOD 4 = 0 
SUM = SUM + I 
NECT I 

Comment dois-je prendre?

Merci.

Répondre

2

Vous avez mélangé l'opérateur d'égalité. Essayez ceci:

INPUT "ENTER A VALUE FOR N" 
SUM = 0 
FOR I = 1 TO N 
IF I MOD 4 <> 0 
    SUM = SUM + I 
NEXT I 
2

Pas besoin d'écrire un programme, ou du moins pas besoin d'utiliser des boucles.

Somme des nombres premiers n naturels:

sum_1 = n * (n + 1)/2 

Somme des multiples de 4 < n:

sum_2 = 4 * (n/4) * (n/4 + 1)/2 = 2 * (n/4) * (n/4 + 1) 

Le résultat est sum_1 - sum_2:

sum = sum_1 - sum_2 = n * (n + 1)/2 - 2 * (n/4) * (n/4 + 1) 

NB: / = nombre entier division

+2

C'est une belle un! – Spontifixus

0

Cette snip calcule la somme des nombres entiers à n sauter des valeurs divisibles par 4.

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 
+0

Utilise 2 boucles pour calculer la somme des valeurs sans divisible par 4. – eoredson

+0

Bien que cet extrait de code puisse résoudre la question, [y compris une explication] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based -answers) contribue vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Essayez également de ne pas surcharger votre code avec des commentaires explicatifs, ceci réduit la lisibilité du code et des explications! –

+0

Objectif et méthode ajoutés dans le texte à coder. – eoredson