在我的函数中,PolynomialIrreducibility()
我正在评估输入的多项式是否不可约或不超过GF(prime_number)。
void PolynomialIrreducibility () {
// Enter prime number
ZZ prime_number;
ZZ_pX polynom;
do {
cout << "Enter prime number: ";
cin >> prime_number;
} while (!ProbPrime(prime_number));
ZZ_p::init(prime_number); // define GF(prime_number)
// Enter n
long n;
do {
cout << "Enter n: ";
cin >> n;
} while (n < 1);
BuildIrred(polynom, n); // generate an irreducible polynomial P of degree n over GF(prime_number)
ZZ_pE::init(polynom); // define GF(prime_number^n)
// Enter polynom
ZZ_pX input_polynom;
cout << "Enter polynom: ";
cin >> input_polynom;
ZZ_pEX convert_polynom;
conv(convert_polynom, input_polynom);
if (DetIrredTest(convert_polynom)) {
//if (ProbIrredTest(convert_polynom)) {
//if (IterIrredTest(convert_polynom) {
cout << "-> Irreducible polynomial" << endl;
}
else {
cout << "-> Reducible polynomial" << endl;
}
}
在使用不可约多项式 x^2 + x + 2 测试实现的函数时,所有三个函数(DetIrredTest、ProbIrredTest、IterIrredTest)都用于确定多项式是否不可约或不评估它,即使它在 GF(3) 上不是不可约的,如图所示以下。
Enter prime number: 3
Enter n: 2
Enter polynom: [2 1 1]
-> Reducible polynomial
请问,我是以错误的方式评估不可约性还是我做错了什么?