diff options
Diffstat (limited to 'palindrome.c')
| -rw-r--r-- | palindrome.c | 59 | 
1 files changed, 59 insertions, 0 deletions
| diff --git a/palindrome.c b/palindrome.c new file mode 100644 index 0000000..aad741a --- /dev/null +++ b/palindrome.c @@ -0,0 +1,59 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +int isPalindrome(long num){ +    long len = 0; +    long n = num; +    while(n != 0){ +        n = n / 10; +        len++; +    } +    char *numchar = (char *) malloc (len * sizeof(char)); +    sprintf(numchar, "%ld", num); +    //printf("%s\n", numchar); +    // Backwards counter +    long j = len - 1; +    // Forwards counter +    long i = 0; + +    while(i < len){ +        if(numchar[i] != numchar[j]) +            return 0; +        i++; +        j--; +    } +    return 1; +} + +long *findProduct(long num){ +    for(long i = 999; i > 100; i--) +        for(long j = 999; j > 100; j--) +            if(i * j == num){ +                long *facts = (long *) malloc (2 * sizeof(long)); +                facts[0] = i; +                facts[1] = j; +                return facts; +            } +} + +long findMaxPalindrome(){ +    long large = 0; +    for(long i = 999; i > 100; i--){ +        for(long j = 999; j > 100; j--){ +            long test = i * j; +            if(isPalindrome(test) && test > large){ +                large = test; +            } +        } +    } +    return large; +} + +int main(){ +    long answer = findMaxPalindrome(); +    printf("%d\n", answer); +    long *prod = findProduct(answer); +    printf("The factors are %d and %d\n", prod[0], prod[1]); +} + | 
