2015-03-01 1 views
0

Je suis nouveau à Qbasic et je voulais apprendre à imprimer les nombres premiers de 1 à une variable qui est définie à un nombre entré par l'utilisateur .. s'il vous plaît aider ... J'ai essayé d'utiliser la boucle while while mais cela n'a pas fonctionné. MerciQBASIC Prime nombres de 1 à var

+3

Nous pouvons vous aider avec ce que vous avez, mais pour cela vous devez ajouter ce code à votre question et expliquer ce que/où il ne fonctionne pas (sur quelle ligne, ou ce que la sortie est, ce que vous attendiez). J'ai trouvé [cette question] (http://stackoverflow.com/questions/17113886/convert-program-from-qbasic-to-python) qui semble être une implémentation de nombres premiers fonctionnels dans QBASIC. Peut-être que ça aide. Vous [recherche] (http://stackoverflow.com/search?q=prime+qbasic) peut-être pour différents mots-clés. – rene

Répondre

1

répondre à votre question comme guide:

Vous devez trouver des séparateurs valides de votre numéro d'entrée (n > 1):

séparateurs valides de n:
En cas de un nombre inférieur à n ou n/2 qu'après avoir divisé son réseau est égal à zéro;
n MOD i = 0.

Maintenant, utilisez l'une de ces méthodes pour trouver le nombre premier:

  • Somme des séparateurs valides d'un nombre premier est égal à ce nombre plus un, et pour séparateurs valides moins de n ou n/2 est une;
    sum = 1
  • Nombre de séparations valides d'un nombre premier est égal à deux, et pour des séparateurs valides moins de n ou n/2 est une;
    count = 1
0

Cette snip de code calcule les nombres premiers de 2 à une gamme supérieure.

Il fonctionne en divisant la valeur de test par tous les nombres de 2 à la racine carrée de la gamme supérieure.

PRINT "Upper value"; 
INPUT n 
FOR l = 2 TO n 
    f = -1 
    FOR m = 2 TO INT(SQR(l)) 
     IF l/m = l \ m THEN 
      f = 0 
      EXIT FOR 
     END IF 
    NEXT 
    IF f THEN 
     PRINT l 
    END IF 
NEXT 
+1

Calcule les nombres premiers jusqu'à n en utilisant la force brute. – eoredson

+1

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) aide 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

Ajout de texte au-dessus du code décrivant le but et la méthode. – eoredson

1

C'est assez facile. Tout ce que vous avez à faire est de lancer une boucle imbriquée. Une boucle qui vérifie si un nombre est premier ou non et un pour l'afficher.

CLS 
INPUT "enter a range"; a 
FOR i = 1 TO a 
    FOR j = 1 TO i 
     IF i MOD j = 0 THEN 
      check = check + 1 
     END IF 
    NEXT j 
    IF check = 2 THEN 
     PRINT i 
    END IF 
    check = 0 
NEXT i 
END 
+0

Ce code n'affiche aucun nombre premier jusqu'à une plage et n'affiche rien quand un nombre premier est entré. – eoredson

+0

merci de me rappeler de l'erreur! J'ai oublié de réinitialiser la valeur de la variable de vérification dans le code précédent. – uvrichest