0
点赞
收藏
分享

微信扫一扫

cinta作业二

静悠 2022-01-06 阅读 31
c++

#1、给出Bezout定理的完整证明。
请添加图片描述
#2、实现GCD算法的迭代版本。

#include <iostream>
using namespace std;
int gcd(int a,int b)
{
	int temp=0;
	while(b!=0)
	{	
		temp = a;
		a = b;
		b = temp % a;
	}
	return a;
}

int main()
{
    int gcd(int a,int b); 
	int a=18;
	int b=9;
	cout<<"a=18	b=9"<<endl;
	cout<<gcd(a,b);
	return 0;
}

#3、实现EGCD算法。输入:a、b两个整数,输出:r、s、d三个整数,满足ar + bs =d。

#include <iostream>
using namespace std;
int egcd(int a,int b,int *result)
{
	if (a<b)
	{
		int temp = a;
		a = b;
		b = temp;
	}
	int temp_a, temp_b, temp_ab;
	int n;
	int r0=1, r1=0, s0=0, s1=1;
	while (b != 0)
	{
		n = a/b;
		a %= b;
		temp_ab = a;
		a = b;
		b = temp_ab;
		r0 -= n * r1;
		s0 -= n * s1;
		temp_a = r0;
		temp_b = s0;
		r0 = r1;
		s0 = s1;
		r1 = temp_a;
		s1 = temp_b;
	}
	result[0] = r0;
	result[1] = s0;
	result[2] = a;
}
 
int main()
{
	int egcd(int a,int b,int *result);
	int *result;
	int arr[3]={};
	result=arr;
	int a, b;
	cin>>a;
	cin>>b;
	egcd(a,b,result);
	cout<<"系数r:"<<result[0]<<endl;
	cout<<"系数s:"<<result[1]<<endl; 
	cout<<"最大公因子d:" <<result[2]<<endl;
	return 0;
}

#4、实现一种批处理版本的GCD算法,即,给定一个整数数组,输出其中所有整数的最大公因子。输入:一个整数数组a;输出:一个整数d,是a数组中所有整数的最大公因子。

#include <iostream>
using namespace std;
int gcd(int arr[],int n)
{
	int d;
	if (arr[0] < arr[1])
	{
		int tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	while (arr[1] != 0)
	{
		arr[0] = arr[0] % arr[1];
		int tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	d = arr[0];
	for (int i = 2; i < n; i++)
	{
		if (d < arr[i])
		{
			int tmp = arr[i];
			arr[i] = d;
			d = tmp;
			
		}
		while (arr[i] != 0)
		{
			d = d % arr[i];
			int tmp = d;
			d = arr[i];
			arr[i] = tmp;
		}
 
	}
	return d;
}
int main()
{
	int gcd(int arr[],int n);
	int n;
	cout <<"请输入数组的元素个数:"<< endl;
	cin>>n;
	int *p = new int[n];
for (int i = 0; i < n; i++)
	{
		cin>>p[i];
	}
	cout <<"最大公因数为:"<<gcd(p,n)<<endl;
	return 0;
}
举报

相关推荐

CINTA作业六

CINTA作业四

cinta作业五

CINTA作业三

【MySQ】 作业二

python作业二

JavaEE作业-实验二

第二周作业

JSP第二周作业

SLAM第二章作业

0 条评论