Beispiel #1
0
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;
        }
    }
}
Beispiel #2
0
Datei: 038.c Projekt: ilyak/euler
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;
}
Beispiel #3
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;
}
Beispiel #4
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;
}