16、正整数序列 Q 中的每个元素都至少能被正整数 a 和 b 中的一个整除,现给定 a 和 b,
需要计算出 Q 中的前几项,例如,当 a=3,b=5,N=6 时,序列为 3,5,6,9,10,12
(1)、设计一个函数 void generate(int a,int b,int N ,int * Q )计算 Q 的前几项
(2)、设计测试数据来验证函数程序在各种输入下的正确性。
/*
16、正整数序列 Q 中的每个元素都至少能被正整数 a 和 b 中的一个整除,现给定 a 和 b,
需要计算出 Q 中的前几项,例如,当 a=3,b=5,N=6 时,序列为 3,5,6,9,10,12
(1)、设计一个函数 void generate(int a,int b,int N ,int * Q )计算 Q 的前几项
(2)、设计测试数据来验证函数程序在各种输入下的正确性。
*/
#include<iostream>
#include<stdio.h>
using namespace std;
void generate(int a,int b,int N ,int * Q )//计算 Q 的前N项
{
if(a <= 0 || b <= 0 || N <= 0 || !Q)
return;
int A = 1;
int B = 1;
for(int i=0;i<N;++i)
{
if(A*a<B*b)
{
Q[i]=A*a;
++A;
}
else if(A*a>B*b)
{
Q[i]=B*b;
++B;
}
else
{
Q[i]=A*a;
++A;
++B;
}
}
}
void showArr(int Q[],int N)
{
for(int i=0;i<N;++i)
printf("%d ",Q[i]);
printf("\n");
}
int main()
{
int a=3,b=5;
int N=10;
int *Q =new int[N];
generate(a,b,N,Q);
showArr(Q,N);
}