0

私は、たとえば24という数字を取り、そのすべての要素を取得して、1と24、8と3などの数字を出力するコードを書き込もうとしています。これを自分で試しましたが、かなり新しいです。 c ++を使用するので、少し混乱します。これが本当に簡単なのか、簡単に答えられるのか、お詫び申し上げます。これがどのように行われるかを教えていただけますか?

int y = 0;
int x = 0;
int product = x * y;

while (true)
{
    product = x * y;
    x++;
    y++;
    if (product == 24)
    {
        cout << x << " " << y << endl;
    }
}

それは私が試したコードですが、xとyが同時に増加しているため、製品として24に達することは決してないことに気づきました。

4

4 に答える 4

1

簡単なコードスニペットは次のとおりです。

for (int i = 1; i <= n; ++i) { 
    if (n % i == 0) {
        std::cout << i;
    }
}

最適化されていないことに注意してください。

于 2012-12-10T23:42:10.470 に答える
1

ではなくy++、試してみてくださいy = 24 / x。ゼロxではなく、から始めてください。1

それで:

x++;               // do this first, so x isn't zero
y = 24 / x;       // get closest y, rounding down
product = x * y; // see if it works
if (product == 24)
  ...
于 2012-12-10T23:43:55.123 に答える
1

xとyを反対方向から開始する必要があります。(つまり、x=1およびy=24)中央値(つまり、12)に達するまで、それらを互いに近づけます。例えば

  1. x = 1 y = 24-> product = 24、
  2. x = 1、y = 23-> product = 23 <24なので、x ++
  3. x = 2、y = 23-> product = 46> 24 so y--
  4. x = 2、y=22->製品..。

C ++よりも、あなたが求めるものの方がアルゴリズム的です。

于 2012-12-10T23:58:53.300 に答える
0

1からその番号までループする必要があります。テストしている数値が、現在のループインデックスを法として0の場合、それは係数です。

これは簡単にコードに変換されます。ヒントは次のとおりです。%はモジュロ演算子です。

特定のステップでつまずいた場合は、こちらからお気軽にお問い合わせください。ただし、最初に上記を翻訳してみてください。

于 2012-12-10T23:42:07.880 に答える