2012-12-10 79 views
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的同時增加它永遠不會達到2400作爲產品的代碼。

回答

1

而不是y++,請嘗試y = 24/x。剛開始x1,而不是零!

所以:

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) 
    ... 
+0

非常感謝你的工作!我很感謝幫助:) –

+0

你知道我怎麼能得到這個負面的數字以及正面?如果這樣的話會很棒。 –

+0

你能更準確地知道你想要發生什麼嗎?你的意思是你想列出'-8'和'-3'作爲'24'的因子?或('-8','3')和('3','-8')作爲「-24」的因子? –

0

你會想從1循環到那個數字;如果你正在測試的數字,模數你當前的循環索引是0,那麼這是一個因素。

這很容易翻譯成代碼。這是一個提示:%是模運算符。

如果一個特定的步驟讓你起牀,請隨時在這裏問問。但嘗試翻譯上面的第一個。

1

下面是一個簡單的代碼片段:

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

注意,它不是最優化。

1

你應該在相反的方向開始x和y。 (即x = 1和y = 24),並將它們靠近彼此,直到達到中位數(即12)。 例如

  1. X = 1個Y = 24 - >產物= 24,
  2. X = 1,Y = 23 - >產物= 23 < 24,從而X ++
  3. X = 2,Y = 23 - >產品= 46> 24,y--
  4. X = 2,Y = 22 - >產品...

更算法,你問什麼,而不是C++。

+0

這似乎是一個更好的解釋,這將有所幫助。 – PearsonArtPhoto