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 }