2016-04-14 8 views
1

Req prime kullanmadan 1 ile 100 arasındaki asal sayıları bulmak için bu programı yazıyorum.Her dizi öğesinin Ruby'deki belirli bir değerin bölme birimi olmasını nasıl sağlarım?

Programı bölen olarak değerini bölmek için dizideki her öğeyi yapabiliriz Ne

divisors = [2,3,5,7,9,11,13,15] 
arr = divisors.to_a 
(1..100).each do |value| 
    if ((value % (arr.each do |n|) != 0)) 
    puts "#{value}" 
    end 
    end 

1 ila 100 asal sayıları bulmak için? Burada neyi özlüyorum?

+0

15? Hmmm ....... –

cevap

2

Kodunuzda çok sayıda hata var ve ana: yanlış bir sözdizimine sahip ve yakut çözümleyici tarafından kabul edilmeyecektir.

Aşağıdaki kod işe yarayacaktır, ancak Ruby sözdizimi ile ilgili öğretici yazıları okumayı düşünmelisiniz.

divisors = [2,3,5,7,9,11,13] 
(1..100).each do |value| 
    unless divisors.any? { |d| value % d == 0 } 
    puts "#{value}" 
    end 
end 

Bu sayı, yalnızca bölücü içermiyorsa geçerlidir. Enumerable#any? ile birlikte unless'u kullanarak tam olarak tersinin olumsuzluğunu kontrol ederiz: dividers'da d yok mu, value % d sıfırdır, biz bitti.

+0

bu ifadeyi açıklayabilir misiniz - divisors.any değilse? {| d | value% d == 0} Üzgünüz, bu konuda yeniyim .. – SoftwareTestingEnthusiast

+1

Lütfen bir güncellemeye bakın. – mudasobwa

+0

Harika, çok teşekkürler. – SoftwareTestingEnthusiast

İlgili konular