2017-08-09 4 views
1

J'essaye d'écrire du code Fortran 90 pour résumer les premiers 1234 multiples de 3 et 5 (y compris les multiples des deux). Voici mon code jusqu'à présent:Code pour totaliser les 1234 premiers multiples de 3 et 5 n'imprime rien

program sum 
implicit none 
integer :: x 
integer :: y = 5 
integer :: z = 3 
integer :: n 
if (mod(x,y) == 0 .or. mod(x,z) ==0) then 
print *, x 
n = x 
n = x + x 
end if 
end program sum 

Cependant, ce code n'imprime rien au terminal.

Répondre

0

Votre code teste la valeur de x dans l'état if:

if (mod(x,y) == 0 .or. mod(x,z) ==0 

mais la valeur de x n'est pas réglé du tout. Par conséquent, le résultat du programme est complètement indéfini. Vous devez créer une sorte de boucle. Mieux deux boucles.

L'approche la plus naïve est de faire une boucle à partir de 1 et de tester tous les nombres avec la condition ci-dessus et de s'arrêter lorsque vous avez trouvé le nombre désiré de multiples.

+0

Bonjour, merci pour votre réponse. Quel genre de boucle suggérez-vous? J'ai ajouté x = 1, et il imprime maintenant 1 très grand nombre, donc je dois le limiter aux 1234 premiers multiples. Comment ferais-je cela? – youngfreedman

+0

Un DO TAND ou autre boucle DO est intéressant d'envisager. Si vous compilez avec certaines limites et drapeaux de variable non initialisés, alors il peut sauter dans les étapes initiales. – Holmz