project-euler

https://projecteuler.net/
Log | Files | Refs | README

Euler_26.cpp (655B)


      1 #include "Euler.h"
      2 
      3 int Euler::ReciprocalCycles()
      4 {
      5     std::vector<int> primes = EulerUtility::getPrimesUnderCeiling(1000);
      6 
      7     for (int j = primes.size() - 1; j >= 0; --j)
      8     {
      9         bool highestReciprocalCycle = true;
     10 
     11         for (int i = 1; i < primes[j]; ++i)
     12         {
     13             BigInteger bi = EulerUtility::power(10, i);
     14 
     15             if (((bi % primes[j] == 1) && (i != (primes[j] - 1))) || ((bi % primes[j] != 1) && (i == (primes[j] - 1))))
     16             {
     17                 highestReciprocalCycle = false;
     18                 break;
     19             }
     20         }
     21 
     22         if (highestReciprocalCycle)
     23             return primes[j];
     24     }
     25 
     26     return 0;
     27 }