Exemple #1
0
int main()
{
  int input;
  int maxnumfactors = 0;
  int trinum = 0;
  int i, j;
  int *primes; 
  primes = genprimes();

  printf("\nPlease input a maximum: \n");
  scanf("%d", &input);
  
  // find triangle numbers and store number of divisors until input reached
  for(i=1;maxnumfactors<input;i++){   
    int thisnumfactors;
    trinum+=i;
    thisnumfactors=findfactors(trinum,primes);
    printf("%d %d\n",trinum,thisnumfactors);
    if(thisnumfactors>maxnumfactors){
      maxnumfactors=thisnumfactors;
    }
  }
  printf("\nMax Factor %d Triangle Number %d\n", maxnumfactors, trinum);
  return 0;
}
Exemple #2
0
int main(int argc, const char *argv[]) {
	uint64_t total = 0;
	unsigned long i;
	// Not checking things is cool. JUST BELIEVE IT WILL WORK AND IT WILL.
	char *primes = malloc(sizeof(char) * MAXPRIMES);
	genprimes(primes);

	for (i = 2; i < MAXPRIMES; i++) {
		if (primes[i] == TRUE) {
			total += i;
		}
	}

	printf("Sum of primes < 2,000,000 = %llu\n", total);

	free(primes);
	return 0;
}
Exemple #3
0
/*
 * Find the longest sequence of primes under 1,000,000
 * whose sum is a prime.
 */
void eu050(char *ans) {
  const int N = 1000000;

  int *primes = malloc(N/2 * sizeof(int));
  int n = genprimes(primes, N);

  char *sieve = malloc(N);
  gensieve(sieve, N);

  int *sums = (int *)malloc(n * sizeof(int));
  memset(sums, 0, n * sizeof(int));
  int t = 0;

  for (int i = 0; i < n; i++) {
    t += primes[i];
    sums[i] = t;
  }

  int maxlen = 0;
  int maxsum = 0;

  for (int i = 0; i < n; i++) {
    for (int j = i; j < n && sums[j]-sums[i] < N; j++) {
      int sum = sums[j] - sums[i];
      if (j - i > maxlen && sieve[sum] == 0) {
        maxsum = sum;
        maxlen = j - i;
      }
    }
  }
  sprintf(ans, "%d", maxsum);

  free(sums);
  free(primes);
  free(sieve);
}