C no es una buena opción para el Proyecto Euler. Los beneficios de C son velocidad bruta, portabilidad de la máquina (hasta cierto punto, con C estándar), interoperabilidad del lenguaje (si algún idioma se comunica con otro, C es una primera opción popular), pegado a la API de una biblioteca o plataforma específica (porque C es común, por ejemplo, API de sistema operativo) y un lenguaje estable & stdlib. Ninguno de estos beneficios se aplica a resolver problemas de Project Euler. Ni siquiera la velocidad bruta, porque la mayoría de los problemas no se trata de cálculos crudos, sino de la comprensión del algoritmo requerido, y puede sentarse todo el día y esperar antes de la presentación.
Si está intentando problemas Proyecto Euler a ampliar su experiencia con C, que está perfectamente bien, sólo se dan cuenta de esta experiencia no se aplican necesariamente a proyectos del mundo real de larga duración y C puede trabajar.
Para este tipo de problema breve e irrepetible, los lenguajes comúnmente descritos como "lenguajes de scripting" funcionarán mejor, más rápido (en tiempo de desarrollo) y serán más fáciles. Pruebe Python, se mantiene cerca de C de muchas maneras, incluida una API C, y de entre los diversos "lenguajes de scripting" populares es posiblemente el que le resultará más útil junto con los proyectos C.
esto puede convertirse en una respuesta impopular, pero no es una queja — además me gusta mucho C y el uso de C/C++ menudo — y no hay una respuesta explícita aquí a su problema: "no utilice C", con su solución final de gran número dependiendo de la alternativa que elija. Nuevamente escogiendo Python, los enteros no tienen un límite superior (nota debajo), y yo uso esto para codificar de forma natural las respuestas a los problemas del Proyecto Euler, donde en otros idiomas tengo que usar una biblioteca de números alternativos dolorosos por comparación.
(enteros Python: Hay dos tipos de enteros en 2.x, 'int' y 'larga' (que han sido completamente unificado en 3.x) La conversión entre ellos es prácticamente sin fisuras, y 'de largo. 'permite valores arbitrariamente grandes, en lugar de simplemente ser un tipo' int 'más grande como C's long.)
escribir una biblioteca de números grandes va a ser extremadamente difícil y propenso a errores –
Le sugiero que utilice uno existente. –
Escribir una biblioteca simple de bignum que incluya las operaciones básicas no es para nada difícil. Es algo diferente si desea la máxima eficiencia o si desea incluir operaciones complejas, pero esa no es la cuestión de la que se trata. – JaakkoK