正整数序列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的前N项
(2)设计测试数据来验证函数程序在各种输入下的正确性
#include<iostream.h>
/*
i和j分别代表a和b的倍数,然后比较a*i和b*j的大小,取小的放入数组内,
对应的i或j加1,如果两个相同,将数放入数组,i和j都加上1,防止重复输出
*/
void generate(int a,int b,int N,int *Q)
{
int i=1,j=1,num=0;
while(num<N)
{
if(a*i>j*b)
{
Q[num]=j*b;
j++;
}
else if(a*i==j*b)
{
Q[num]=j*b;
i++;
j++;
}
else
{
Q[num]=i*a;
i++;
}
num++;
}
for(i=0;i<N;i++)
cout<<Q[i]<<" ";
cout<<endl;
}
void main()
{
int a=3,b=5,N=12,Q[1000]={0};
generate(a,b,N,Q);
}