正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,如何生成Q中的前几项

思路分析:可以与归并排序联系起来,给定两个变量A、B,变量A轮着存放:a*1,a*2,a*3,……变量组B轮着存放:b*1,b*2,b*3,……有两个整数i、j,分别代表A、B第i、j次存放的值,每次取A、B中的较小值,并将较小值的次数加一,然后继续比较。

代码如下:

#include "stdafx.h"
#include<stdio.h>
void Generate(int a, int b, int N, int *Q)
{
int tmpA, tmpB;
int i = ;
int j = ;
for (int k = ; k < N; k++)
{
tmpA = a*i;
tmpB = b*j;
if (tmpA <= tmpB)
{
Q[k] = tmpA;
i++;
}
else
{
Q[k] = tmpB;
j++;
}
}
}
int main()
{
int a[];
int i;
Generate(, , , a);
for (i = ; i < sizeof(a) / sizeof(a[]); i++)
printf("%d ", a[i]);
printf("\n");
getchar();
return ;
}

效果如图:

正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,如何生成Q中的前几项

上一篇:nginx限制单个IP的最大连接数量限制下载速度


下一篇:js-this的用法,来自阮一峰老师的文章