3

所以我正在尝试创建一个可以找到可以除以数字 1-20 的数字的程序。我知道我将不得不使用以下简单的代码概念:

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

4

3 回答 3

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
}
于 2012-07-11T20:02:22.107 回答
0

break很好的答案,但我认为在这个讨论中提到运营商很好。任何时候,任何循环都可以使用这个操作符终止。如果您不知道所有可能超出范围的参数,并且由于您可能没有明确预期的原因(例如,您与资源的连接可能是不再可用...)

NSError *error = nil;
while(true) {
  // run your app
  if(error) {
    break;
  }
}
于 2012-07-11T20:25:06.840 回答
0

如果一个数字可以被 1 到 20 的所有数字整除,那么它可以被 1 到 20 的 LCM 整除,因此可除性测试是 if(!(n%232792560))。

进一步如果 m = pq | n 然后 p|n, q|n 所以要明确地测试你只需要检查素数的可分性。即如果数字不是偶数,则无需检查是否可被 4、6、8、10、12、14、16、18 或 20 整除。这将测试减少到与第 8 个原始数一致的数字 = 9699690


好的,也许在二读时不像我想的那样明确:扩展测试看起来像(由德摩根定理)

if(!(n%19 || n%17 || n%16 || n%13 || n%11 || n%9 || n%7 || n%5))
    // number is divisible by 1..20   
于 2012-07-11T20:30:07.530 回答