Guest User

Untitled

a guest
Oct 1st, 2021
46
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <gmpxx.h>
  3.  
  4. static bool is_mersenne_prime(mpz_class p)
  5. {
  6.         if( 2 == p )
  7.                 return true;
  8.         else
  9.         {
  10.                 mpz_class s(4);
  11.                 mpz_class div( (mpz_class(1) << p.get_ui()) - 1 );
  12.                 for( mpz_class i(3);  i <= p;  ++i )
  13.                 {
  14.                         s =  (s * s - mpz_class(2)) % div ;
  15.                 }
  16.  
  17.                 return ( s == mpz_class(0) );
  18.         }
  19. }
  20.  
  21. int main()
  22. {
  23.         mpz_class maxcount(45);
  24.         mpz_class found(0);
  25.         mpz_class check(0);
  26.         for( mpz_nextprime(check.get_mpz_t(), check.get_mpz_t());
  27.              found < maxcount;
  28.              mpz_nextprime(check.get_mpz_t(), check.get_mpz_t()))
  29.         {
  30.                 //std::cout << "P" << check << " " << std::flush;
  31.                 if( is_mersenne_prime(check) )
  32.                 {
  33.                         ++found;
  34.                         std::cout << "M" << check << " " << std::flush;
  35.                 }
  36.         }
  37. }
RAW Paste Data