2013-10-08 1 views
0

J'essaie de voir si l'utilisateur entre un nombre premier. Je veux imprimer « PRIME » ou « NOT PRIME » à l'écran:Ruby n'imprimera pas la sortie

prime = "" 
puts "TYPE IN A NUMBER TO SEE IF IT'S PRIME: " 
gets.chomp(prime).to_i 
for divide_by in 2..(prime.to_i - 1) 
    if prime % divide_by == 0 
     puts "NOT PRIME!!!" 
else 
    puts "PRIME!!!" 
end 
end 

Dois-je utiliser une boucle à la place while?

Répondre

0

Votre gets.chomp(prime).to_i ne fait rien de significatif. Je ne comprends pas le but de chomp ici, et il n'attribue aucune variable. Si vous voulez recevoir le numéro d'entrée comme prime, vous devez faire prime = gets.to_i. Une fois que vous faites cela, vous n'avez pas besoin de faire de nouveau to_i comme dans for divide_by in 2..(prime.to_i - 1).

En outre, votre logique est erronée. Si prime n'est pas divisible par 2, est-ce suffisant pour dire "PRIME!!"? Je ne pense pas.

Et si vous vous demandez quel type de boucle utiliser, la boucle for est rarement utile. Vous devez utiliser each.

+0

Oui, mais comment puis-je faire quelque chose avec le numéro? Est-ce que je le mets dans la même boucle? –

+0

Mettez ce qui dans la même boucle que quoi? – sawa

+0

"Si le nombre premier n'est pas divisible par 2, est-ce suffisant pour dire" PRIME !! "?" Je sais. J'essayais de dire par n'importe quel nombre entre 1 et le premier, sans compter 1. Je vais essayer de le faire avec un pour chaque boucle. –