描述:
一間屋子里有100盞燈排成一行,按從左至右的順序編號(hào)1颁糟、2、3文黎、4侵俗、5…99、100,
每盞燈都有一個(gè)開(kāi)關(guān)泽裳,開(kāi)始全部都關(guān)著瞒斩,現(xiàn)有100個(gè)學(xué)生,
第1個(gè)學(xué)生把1的倍數(shù)的燈全部拉一下涮总,
第2個(gè)學(xué)生把2的倍數(shù)燈全部都拉一下胸囱,
第3個(gè)學(xué)生把3的倍數(shù)燈全部都拉一下
…
第100個(gè)學(xué)生把100的倍數(shù)燈全部都拉一下,
這時(shí)燈有多少是開(kāi)著的妹卿?
代碼:
- (void)test4{
NSMutableArray *arrs = [NSMutableArray array];
int count = 100;
//alloc 100盞燈
for (int i = 0; i < count; i ++) {
//默認(rèn)所有燈關(guān)閉
[arrs addObject:@(0)];
}
//遍歷每一棧燈
for (int i = 1; i < count+1; i ++) {//數(shù)組index從0 開(kāi)始旺矾,為了對(duì)齊與學(xué)生的序號(hào),此處從1開(kāi)始循環(huán)夺克,循環(huán)次數(shù)100
//每個(gè)學(xué)生操作一次:
//規(guī)律: 第 i 個(gè)學(xué)生 智能操作與其序號(hào)成倍數(shù)的燈箕宙,即 操作的燈對(duì)其序號(hào)的余數(shù)為0;
for (int j = 1; j < count + 1; j ++) {//數(shù)組index從0 開(kāi)始铺纽,為了對(duì)齊與燈的序號(hào)柬帕,此處從1開(kāi)始循環(huán),循環(huán)次數(shù)100
if (j % i == 0 && j >= i) {
arrs[j - 1] = @(![[arrs objectAtIndex:j - 1] intValue]);
}
}
}
[arrs enumerateObjectsUsingBlock:^(NSNumber* _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (obj.intValue == 1) {
NSLog(@"== %lu", idx +1 );
}
}];
}