2012-07-11 26 views
2

,所以我想创建一个程序,它可以找到一些可以通过数字1-20分。我知道,我将不得不使用下面简单的代码的概念:循环,直到在Objective-C达到多个条件

我知道如何循环工作,以及如何创建一个运行,直到满足条件的循环。是否有一个简单的方法是在满足几个条件之前运行一个循环?

+0

我建议你operators'了解'逻辑的http:/ /en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B – Jack 2012-07-11 20:20:56

回答

5
while (condition1 && condition2 && condition3...) {} 

for (int i = 0; i < n && condition1 && condition2...) {} 

显然,这些将循环,而条件为真,直到条件满足。它在逻辑简单的改变,虽然得到的结果你想

编辑

寻找可能是喜欢那种循环您选择的

安逸例如:在玩

int number = ...;//initialized somewhere, this is what we're checking 
BOOL divisible = YES; 
for (int i = 1; i <= 20 && divisible; ++i) 
{ 
    if ((number % i) != 0) 
     divisible = NO;//not divisible by i 
} 
+0

好的谢谢。起初我以为逗号会这样做,但它是&&。谢谢。 – user1518915 2012-07-11 20:04:04

+0

还有'||',明智地使用它们取决于你希望如何评估你的逻辑 – 2012-07-11 20:04:40

+0

好的。最后一件事。对于for循环,是“我 user1518915 2012-07-11 20:06:17

0

很好的答案,但我认为在本次讨论中提及break运营商是一件好事。任何时候任何循环都可以使用这个操作符来终止。如果你不知道所有可能超出界限的参数,并且你想有一种打破循环的方式,这可能是你没有明确预期的原因(也许你的资源连接是不再...)

NSError *error = nil; 
while(true) { 
    // run your app 
    if(error) { 
    break; 
    } 
} 
0

如果数字是从1到20的所有数字整除那么它是由1到20的LCM整除所以整除的测试是,如果(!(N%232792560)) 。

此外如果m = PQ | n然后p | n,q | n所以明确地测试你只需要检查素数的可分性。即,如果数量不是即使这样也没有必要由4,6,8,10,12,14,16,18或20。这降低了测试的号码是一致的8素数阶乘= 9699690来检查整除


OK,也许在二读时没有明确的,因为我想:展开的测试看起来像(由德,摩根定理)

if(!(n%19 || n%17 || n%16 || n%13 || n%11 || n%9 || n%7 || n%5)) 
    // number is divisible by 1..20