如何获得产品的因素

时间:2012-12-10 23:37:51

标签: c++

我正在尝试编写一段代码,将数字设为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 个答案:

答案 0 :(得分:1)

以下是快速代码段:

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

请注意,它未经过优化。

答案 1 :(得分: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)
  ...

答案 2 :(得分:1)

你应该在相反的方向上开始x和y。 (即x = 1和y = 24)并使它们彼此靠近,直到达到中位数(即12)。 例如

  1. x = 1 y = 24 - > product = 24,
  2. x = 1,y = 23 - > product = 23&lt; 24 so x ++
  3. x = 2,y = 23 - > product = 46&gt; 24 so y--
  4. x = 2,y = 22 - >产品...
  5. 你要求的更多算法而不是c ++。

答案 3 :(得分:0)

你想要从1循环到那个数字;如果您正在测试的数字,以当前循环索引为模的模数为0,则它​​是一个因子。

这很容易翻译成代码。这是一个提示:%是模运算符。

如果某个特定步骤让您感到兴奋,请随时在此询问。但是首先尝试翻译上面的内容。