Frobenius Probable Prime Test
Rick Lavoie
Rick Lavoie" <coldfury@bu.edu
Thu, 29 May 2003 22:06:06 -0400
Thanks for the input!
> "Rick Lavoie" <coldfury@bu.edu> writes:
> >
> > http://cs-people.bu.edu/coldfury/frobenius.c
> >
> > for (i = m_bitsize-1; i >= 0; i--) { /* We loop over the bits of m,
analogous to powering */
>
> If you want to work something up as a demo for inclusion the gmp
> distribution you'll need it in GNU coding style.
>
> http://www.gnu.org/prep/standards.html
I looked at the standards, but I couldn't find anything applicable to the
above for loop.
> Perhaps mpz_congruent_ui_p here, unless you want that reduced temp1
> for later use.
mpz_congruent_ui_p takes an unsigned int as both the second and third
parameters, and N is too big to be held in an unsigned int.
> > } while (mpz_perfect_square_p(discriminant) || mpz_jacobi(discriminant,
N) != -1 || mpz_jacobi(b, N) != 1);
>
> Will this be an infinite loop if N is a perfect square? Or perhaps
> that's checked early on.
I don't see off-hand if N is a perfect square will affect anything. However,
it's a useful thing to test before going thru the main test, so I've added
it in.
> > gmp_printf("Test Number: ");
> > gmp_scanf("%Zd", N);
> > gmp_printf("Iterations: ");
> > gmp_scanf("%u", &iterations);
>
> Probably cleaner to take these from the command line, or have it only
> as an option to read stdin.
I've modified the program so it reads it's parameters thru the command line.
> A check that input conversion is successful (ie. it's a number) will
> be good too, to keep users out of trouble.
Added (reasonible) error checking too.
> A usage message will be wanted too. Perhaps as a printf when run, or
> in some comments at the top of the file.
If the proper parameters aren't inputted, a brief explanation of usage is
now printed.
Rick Lavoie
coldfury@bu.edu