现在的位置: 首页 > 综合 > 正文

116 Q中的每个元素都至少能被正整数a和b中的一个整除,计算Q 的前几项

2017年11月22日 ⁄ 综合 ⁄ 共 728字 ⁄ 字号 评论关闭

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);
}

抱歉!评论已关闭.