C ++ - 查找倍数&消除常见的

时间:2012-03-31 13:58:57

标签: c++

我写了一个程序,要求用户输入两个数字和一个阈值。程序应该找到低于特定阈值的两个数字的所有倍数。我写了一个for循环,每次都会遍历数字并检查是否有任何倍数也是另一个输入数字的倍数。如果是,则将其打印出来。但奇怪的是,当我运行这个程序时,它不会打印任何东西!这真是令人沮丧!

#include <iostream>
using namespace std;

int main()
{
    int mult1, mult2, threshold;
    cout << "Enter first multiple: ";
    cin >> mult1;
    cout << "Enter second multiple: ";
    cin >> mult2;
    cout << "Enter the threshold: ";
    cin >> threshold;
    for (int i = 1; i < threshold; i++)
    {
        int check1 = mult1*i;
        int check2 = mult2*i;
        if (check1/check2 == 1)
            cout << check1 << endl;
    }
    char response;
    cin >> response;
    return 0;
}

3 个答案:

答案 0 :(得分:2)

在每行显示后添加endl 默认情况下,cout有一个缓存,它不会立即显示 endl刷新输出并添加换行符。

cout << "Enter first multiple: " << endl;

答案 1 :(得分:2)

不幸的是,这个问题没有充分说明问题。

  

程序应该找到低于特定阈值的两个数字的所有倍数。

您是否要查找 输入数字或两个输入数字的倍数的所有数字?如果两者,请注意结果将只是输入的least common multiple的所有倍数。

一个有用的提示:C ++有% operator可以告诉你一个数字是否是另一个数字的倍数。

if ( a % b == 0 ) {
    // a is a multiple of b
}

答案 2 :(得分:1)

由于这似乎是家庭作业,我不会给你完整的答案,只是一个提示:

if (check1/check2 == 1)表示check1位于[check2, 2*check2)的某个地方,根本不是您想要的地方。您可能需要查看%运算符。

此外,如果您要打印的值小于threshold,则check1应小于threshold,这意味着i应该达到threshold/mult1 }。