describe Integer, "#rough?" do ROUGH = { # A000027 2 => [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35, 36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67, 68,69,70,71,72,73,74,75,76,77], # A005408 3 => [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35, 37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67, 69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99, 101,103,105,107,109,111,113,115,117,119,121,123, 125,127,129,131], # A007310 5 => [1,5,7,11,13,17,19,23,25,29,31,35,37,41,43,47,49, 53,55,59,61,65,67,71,73,77,79,83,85,89,91,95,97, 101,103,107,109,113,115,119,121,125,127,131,133, 137,139,143,145,149], # A007775 7 => [1,7,11,13,17,19,23,29,31,37,41,43,47,49,53,59,61, 67,71,73,77,79,83,89,91,97,101,103,107,109,113, 119,121,127,131,133,137,139,143,149,151,157,161, 163,167,169,173,179,181,187,191,193,197,199,203, 209], # A008364 11 => [1,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67, 71,73,79,83,89,97,101,103,107,109,113,121,127,131, 137,139,143,149,151,157,163,167,169,173,179,181, 187,191,193,197,199,209,211,221,223,227,229,233, 239,241,247], # A008365 13 => [1,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71, 73,79,83,89,97,101,103,107,109,113,127,131,137, 139,149,151,157,163,167,169,173,179,181,191,193, 197,199,211,221,223,227,229,233,239,241,247,251, 257,263,269], # A008366 17 => [1,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73, 79,83,89,97,101,103,107,109,113,127,131,137,139, 149,151,157,163,167,173,179,181,191,193,197,199, 211,223,227,229,233,239,241,251,257,263,269,271, 277,281,283], # A166061 19 => [1,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79, 83,89,97,101,103,107,109,113,127,131,137,139,149, 151,157,163,167,173,179,181,191,193,197,199,211, 223,227,229,233,239,241,251,257,263,269,271], # A166063 23 => [1,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83, 89,97,101,103,107,109,113,127,131,137,139,149,151, 157,163,167,173,179,181,191,193,197,199,211,223, 227,229,233,239,241,251,257,263,269,271] } ROUGH.each do |base, members| (members.first..members.last).each do |n| if members.include?(n) it "should return true for rough number #{n} when k=#{base}" do n.rough?(base).should be_true end else it "should return false for non-rough number #{n} when k=#{base}" do n.rough?(base).should be_false end end end end end