【问题标题】:Looping until multiple conditions reached in Objective-C循环直到在 Objective-C 中达到多个条件
【发布时间】:2012-07-11 12:48:01
【问题描述】:

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

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

【问题讨论】:

标签: objective-c c loops conditional-statements


【解决方案1】:

如果一个数字可以被 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   

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      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
      }
      

      【讨论】:

      • 好的,谢谢。起初我以为逗号会这样做,但它是 &&。谢谢。
      • 还有||,根据你希望如何评估你的逻辑来明智地使用它们
      • 好的。最后一件事。对于 for 循环,“i
      • @user1518915 这是一个随机条件。
      • @user1518915 这是一个条件,例如,如果你想要一个循环来检查一个数字是否可以被数字 1-20 整除,你可以有一个看起来像我的循环编辑
      猜你喜欢
      • 2016-06-18
      • 2016-12-18
      • 2012-09-23
      • 2013-12-09
      • 2015-04-08
      • 2023-03-24
      • 2016-05-02
      • 2021-12-24
      • 1970-01-01
      相关资源
      最近更新 更多