在自然數列中,我們必須刪除第1遍中的每個第2個元素。然後在剩下的元素中,刪除第二遍中的每個第三個元素。然後在第K次通過時,從剩餘的元素中移除每個(k + 1)個元素。刪除第k個自然數中的第(k + 1)個剩餘元素
該系列將是這樣的
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, ...
一號通後(除每2元后),
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, ...
第二遍後,(去掉每3元后),
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, ...
第3次通過後(除去每第4個元素後),
1, 3, 13, 15, 19, 25, 27, ...
所以,無限通後,它將成爲
1, 3, 7, 13, 19, 27, 39, 49, 63, 79, ...
這個系列也被稱爲弗拉維奧 - 約瑟夫篩。
對此的解決方案,以找到在該系列中的第6元素:
- 做6^2 = 36
- 再往5的倍數給予35
- 然後向下到多4 = 32
- 然後下降到3 = 30
- 然後倍數下降到2 = 28
- 然後倍數下降到1 = 27 的倍數
- 等第六幸運數字是27
雖然它的工作原理,我不理解的解決方案是如何工作的?
這個交流計劃是,
int calc(int n)
{
if (n == 1) return 1;
return calc_rec(n*n, n-1);
}
int calc_rec(int nu, int level)
{
int tmp;
if (level == 1) return (nu-1);
tmp = nu % level;
return calc_rec(nu - (tmp ? tmp : level), level-1);
}
的鏈接解釋這個http://oeis.org/A000960
您可能會在http://math.stackexchange.com上詢問這個問題 – Shahbaz
我做到了。 http://math.stackexchange.com/questions/143876/remove-every-k1-th-remaining-element-in-kth-pass-of-natural-numbers – viji