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 の最小公倍数で割り切れるため、割り切れるテストは if(!(n%232792560)) になります。

さらに、m = pq | n の次に p|n, q|n を明示的にテストするには、素数による割り切れる可能性をチェックするだけで済みます。つまり、数が偶数でない場合、4、6、8、10、12、14、16、18、または 20 で割り切れるかどうかをチェックする必要はありません。


OK、おそらく 2 番目の読み取りでは、私が望むほど明確ではありません: 拡張されたテストは次のようになります (de Morgan の定理による)

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 に答える