#include <stdio.h>
#define QLEN 100
/************************************************************************/
/* * 正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,
* 需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12
* 设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项
//************************************************************************/
//1,2,3...从自然数中筛选,效率不高
//仔细研究即发现其实是从a和b的倍数中删选
multipleA = 1,为a的倍数, multipleB = 1为b的倍数,
选择a*multipleA和b*multiple中小的作为下一个元素,multiple+1, 继续选择
/************************************************************************/
/*我的函数*/
void test1(int a, int b)
{
int n = 0;
int i = (a < b) ? (a) : (b);
for(; ;)
{
if((0 == i % a) || (0 == i % b))
{
printf("%d\n", i);
n++;
}
i++;
if (n == QLEN)
{
break;
}
}
}
/*算法函数*/
void test2(int a, int b)
{
int i = 0;
int multa = 1;
int multb = 1;
for(i = 0; i < QLEN; i++)
{
if(multa * a < multb * b)
{
printf("%d\n", a * multa);
multa++;
}
else if(multa * a > multb * b)
{
printf("%d\n", b * multb);
multb++;
}
else
{
printf("%d\n", b * multb);
multa++;
multb++;
}
}
}
int main()
{
test1(3, 5);
printf("-----------------------------\n");
test2(3, 5);
}
20150527
最新推荐文章于 2016-05-27 08:27:00 发布