⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 在Z2[X]中判断一个多项式是否本原多项式
💻 CPP
字号:
#include <iostream>
#include <cstdlib>
#include <algorithm>

using namespace std;
#include "poly.h"

int main(int argc, char *argv[]) {

	//Poly::listPrimitive(4);
	Poly::size_t	m;
	while (1) {
		cout<<"打印本原多项式列表,最高次为(输入 0 跳过):";
		cin>>m;
		if (m != 0) {
			Poly::listPrimitive(m);
		} else {
			break;
		}
	}
	//Poly x1("1111"), x2("111000011");
	//cout<<x1<<" + "<<x2<<" = "<<x1+x2<<endl;
	//cout<<x1<<" * "<<x2<<" = "<<x1*x2<<endl;
	//cout<<x1<<" / "<<x2<<" = "<<x1/x2<<" ... "<<x1%x2<<endl;
	//cout<<x1<<" = "<<x2*(x1/x2)+x1%x2<<endl;
	//cout<<x2<<" is "<<(x2.isPrimitive() ? "" : "not ")<<"primitive."<<endl;

	//Poly x3 = x1.inverse(x2);	
	//if (!x3.isZero()) {
	//	cout<<"inverse("<<x1<<") = "<<x3<<endl;
	//	cout<<"because:"<<endl;
	//	cout<<"\t"<<x1<<" * "<<x3<<" = "<<x1*x3/x2<<" * "<<x2<<" + "<<x1*x3%x2<<endl;
	//	cout<<"\t"<<x1*x3<<" = "<<x1*x3/x2*x2<<" + "<<x1*x3%x2<<endl;
	//}

	Poly	f, f_i, p;
	while (1) {
		cout<<"请输入二进制格式的待测试的多项式(如11001,输入 0 退出):";
		cin>>p;
		if (p.isZero()) {
			cout<<"再见!"<<endl;
			return 0;
		}
		if (p.isPrimitive()) {
			cout<<p<<" 是本原多项式"<<endl;
			break;
		} else {
			cout<<p<<" 不是本原多项式"<<endl;
		}
	}
	while (1) {
		cout<<"请输入二进制格式的待求逆的多项式(如11001,输入 0 退出):";
		cin>>f;
		if (f.isZero()) {
			cout<<"再见!"<<endl;
			break;
		}
		f_i = f.inverse(p);
		if (!f_i.isZero()) {
			cout<<f<<" 的逆为 "<<f_i<<endl;
			cout<<"因为:"<<endl;
			cout<<f<<" * "<<f_i<<" = "<<(f*f_i/p)<<" * "<<p<<" + "<<(f*f_i%p)<<endl;
			cout<<(f*f_i)<<" = "<<(f*f_i/p * p)<<" + "<<(f*f_i%p)<<endl;
		}
	}	
	//system("pause");
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -