Project Euler : Solution au problème 4, en C

Tiens ça fait une semaine sans code, pas bien!

On va dire que j'avais une semaine chargée d'occupations d'ordre sérieux, et qu'un divertissement de geek n'avait pas exactement sa place dans mon agenda. Oui, ça fait crédible, disons ça. Enfin, toujours est-il que voici une solution au problème 4 du Project Euler, en C toujours parce que le C c'est le bien.

/* 2008/11/09 - euler4.c
 * Solution au Probleme 4 de Project Euler
 * http://projecteuler.net/index.php?section=problems&id=4
 * Jean Karim Bockstael - jkb@jkbockstael.be
 */

#include <stdio.h>
#include <math.h>

int ispalindrome(int n) {
    int len = n < 100000 ? 5 : 6;
    while (len > 1 ) {
        if ((n / (int)pow(10.0,(float)--len)) != (n % 10)) {
            return 0;
            }
        n = (n % (int)pow(10.0,(float)len--)) / 10;
        }
    return 1;
    }

int euler4() {
    int x,y;
    int product;
    int biggest=0;
    for (x=100; x<999; x++) {
        for (y=x; y<999; y++) {
            product=x*y;
            if (ispalindrome(product)) {
                biggest = (product > biggest) ? product : biggest;
                }
            }
        }
    return biggest;
    }

int main(int argc, char** argv) {
    printf("%i\n",euler4());
    return 0;
    }

C'est presque élégant d'ailleurs...

cc-by-nc | code (c) | project euler

<<< Project Euler : Solution au problème 5, en C (2008-11-10) | Le paradoxe du piéton de Schrödinger (2008-11-06) >>>