Skip to content

Instantly share code, notes, and snippets.

@AlexBolotsin
Created July 27, 2016 20:46
Show Gist options
  • Save AlexBolotsin/87684f525fb342003f83f56f9a131e72 to your computer and use it in GitHub Desktop.
Save AlexBolotsin/87684f525fb342003f83f56f9a131e72 to your computer and use it in GitHub Desktop.
#include <stdio.h>
typedef unsigned long long int BigNumber;
BigNumber reverse(BigNumber number)
{
BigNumber rem = 0;
while (number > 0) {
rem = (rem * 10) + (number % 10);
number = number / 10;
}
return rem;
}
bool isPalindrome(BigNumber num) {
return (num == reverse(num));
}
bool isLychrelNum(int num, const int iterCount = 50) {
BigNumber temp = num;
BigNumber rev;
for (int i = 0; i < iterCount; i++) {
rev = reverse(temp);
if (isPalindrome(rev + temp))
return false;
temp = temp + rev;
}
return true;
}
int main(int argc, char** argv) {
const int maxnum = 10000;
int counter = 0;
for (int i = 1; i <= maxnum; i++) {
if (isLychrelNum(i))
counter++;
}
printf("There are %d Lychrel numbers from 1 to %d.\n", counter, maxnum);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment