int main(int argc, char** argv) { const int* primes = generate_primes(10000000); const int* last_prime = primes; for (; *last_prime; ++last_prime); --last_prime; for (const int* p = last_prime; p > primes; --p) { if (pandigital((long) *p)) { printf("%d\n", *p); break; } } }
int main() { unsigned number = 0; for (unsigned i = 1; i <= 10000; i *= 10) { for (unsigned t = 0; t < i; t++) { unsigned n = form(9 * i + t); if (pandigital(n) && n > number) number = n; } } printf("%u\n", number); return 0; }
int main(void) { uint8_t* bitmap = malloc(N / 8); /* Find primes */ sieve(N, bitmap); /* Loop through primes and find out if their pandigital */ int32_t i; int32_t largest = 1; for (i = 2; i < N; ++i) if ((bitmap[i / 8] & (1 << (i%8))) && pandigital(i)) largest = i; printf("%d\n", largest); free(bitmap); return 0; }
int main(int argc, char *argv[]) { std::map<int, std::pair<int, int>> products; auto add_product = [&products](int a, int b) { int result = a * b; if (pandigital(a, b, result)) { if (products.find(result) == std::end(products)) { std::cout << a << " * " << b << " = " << result << std::endl; products[result] = {a, b}; } } }; // space 1 for (int a = 1234; a <= 9876; ++a) { for (int b = 1; b <= 9; ++b) { add_product(a, b); } } // space 2 for (int a = 12; a <= 98; ++a) { for (int b = 123; b <= 987; ++b) { add_product(a, b); } } int sum = std::accumulate(std::begin(products), std::end(products), 0, [](int total, const decltype(products)::value_type& data) { return total + data.first; }); std::cout << "#unique pandigital identities = " << products.size() << std::endl; std::cout << "sum: " << sum << std::endl; return 0; }