c++中如何输入4个数然后另一个数值为起始值一个数值为终止值,两个除数整除

4.编写程序计算能同时被两个或者三个整数整除的数值。选择两个整数整除,输入四个数值,一个起始数值,一个终止数值,两个除数整数,输出两个数值之间的所有能同时被两个整数整除的数值, 每行输出4个数;或者选择三个整数整除,输入五个数值,一个起始数值,一个终止数值,三个除数整数,输出两个数值之间的所有能同时被三个整数整除的数值, 每行输出4个数;?。

比如,输入
起始数值:1
终止数值:20

选择两个整数整除
输入两个除数整数:2,3
选择两个整数整除输出:6 12

 #include <iostream>

using namespace std;

int main() {
    int a,b,c,d;

    cin >> a;
    cin >> b;
    cin >> c;
    cin >> d;

    //a = 1, b = 20, c = 2, d = 3;
    for (int i = a; i <= b; i++)
        if (i % c == 0 && i % d == 0) 
            cout << i << " ";
    return 0;
}

运行结果 6 12 18

先算出最小公倍数,再输出区间中所有最小公倍数的整倍数的数就行

 int main(){
    int l, r, a, b, lcm;
    cin >> l >> r >> a >> b;

    lcm = a * b;
    if( a < b ){
        int t = a; a = b; b = t;
    }

    while( b ){
        int t = a % b;
        a = b; b = t;
    }
    lcm /= a; //最小公倍数 

    for( int i = l / lcm; i <= r/lcm; i++ )
        if( l <= lcm*i && lcm*i <= r )
            cout << lcm*i << " ";

    return 0;
}