C++ - 查找倍数并消除常见数

C++ - Finding multiples & eliminating common ones

本文关键字:常见数 查找 C++      更新时间:2023-10-16

我编写了一个程序,要求用户输入两个数字和一个阈值。该程序应找到低于特定阈值的两个数字的所有倍数。我写了一个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;
}

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

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

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

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

是否要查找的倍数的所有数字,无论是输入数字还是两个的输入数字?如果两者都,那么请注意,结果将只是输入的最小公倍数的所有倍数。

一个有用的提示:C++有%运算符,它可以告诉你一个数字是否是另一个数字的倍数。

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

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

if (check1/check2 == 1)意味着check1[check2, 2*check2)中的某个位置,这根本不是您想要的。您可能需要查看%运算符。

此外,如果要打印小于threshold的值,则check1应小于threshold,这意味着i应上升到threshold/mult1