我在projecteuler.com上遇到了问题。问题是:
如果我们列出10以下的所有自然数,它们是3或3的倍数 5,我们得到3,5,6和9.这些倍数的总和是23.找到 所有3或5的倍数的总和低于1000。
我想到为每个3和5创建多个数组,最多1000个并使用它们的并集,这不会留下重复(所以我不需要调用array.uniq
)。我写的是:
def get_range(range, step)
ret = []
range.step(step) { |i| ret << i }
return ret
end
p get_range(0..1000, 3) | get_range(0..1000, 5)
这个结果出来了:
[0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66, 69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,129,132,135,138,141, 144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,201,204,207,210,213,216, 219,222,225,228,231,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291, 294,297,300,303,306,309,312,315,318,321,324,327,330,333,336,339,342,345,348,351,354,357,360,363,366, 369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441, 444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516, 519,522,525,528,531,534,537,540,543,546,549,552,555,558,561,564,567,570,573,576,579,582,585,588,591, 594,597,600,603,606,609,612,615,618, 621,624,627,630,633,636,639,642,645,648,651,654,657,660,663,666,669,672,675,678,681,684,687,690,693, 696,699,702,705,708,711,714,717,720,723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768, 771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843, 846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918, 921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993, 996,999,5,10,20,25,35,40,50,55,65,70,80,85,95,100,110,115,125,130,140,145,155,160,170, 175,185,190,200,205,215,220,230,235,245,250,260,265,275,280,290,295,305,310,320,325,335,340,350,355, 365,370,380,385,395,400,410,415,425,430,440,445,455,460,470,475,485,490,500,505,515,520,530,535,545, 550,560,565 ,575,580,590,595,605,610,620,625,635,640,650,655,665,670,680,685,695,700,710,715,725,730,740,745,755 ,760,770,775,785,790,800,805,815,820,830,835,845,850,860,865,875,880,890,895,905,910,920,925,935,940 ,950,955,965,970,980,985,995]
这是第一个数组。如果我交换范围的顺序,那么我得到的数字为5的倍数。我在IRB上尝试了类似的东西:
[1,3,5] | [3, 5, 7]
# => [1, 3, 5, 7]
我错过了什么,我只是疯了,还是我遇到过Ruby中的错误?
答案 0 :(得分:2)
你的阵列是正确的。它包含3个和的倍数.5。看看结尾。它只是没有排序。