int main() { int start_s = clock(); long long int num = 1; long long int i = 2; int divisors = 0; int max = 0; int maxN = 1; while (divisors <= 500) { divisors = numDivisors(num); if (divisors > max) { max = divisors; maxN = num; //std::cout << num << " has " << divisors << " divisors." << std::endl; } num += i; i++; } std::cout << maxN << std::endl; int stop_s = clock(); std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000 << std::endl; while (1); }
int triWithDivs(int target) { int index, curtri, numdivs; index=1; curtri=0; while(numdivs <= target) { curtri = nextTri(index++, curtri); numdivs = numDivisors(curtri); } return curtri; }
int main(int argc, char *argv[]) { int number = 0, i = 1; // number is triangle number, i is current term int sizeOfPrimes = 1000, sizeOfPrimesSqr = 1000000; int *primes; int numPrimes = sieve(sizeOfPrimes, &primes); while(numDivisors(number, primes, numPrimes) < 500) { if(sizeOfPrimesSqr < number) { // Update if it becomes too small sizeOfPrimes *= 5; sizeOfPrimesSqr = sizeOfPrimes*sizeOfPrimes; numPrimes = sieve(sizeOfPrimes, &primes); } number += i++; // Increment number } printf("Triangle number: %d\n", number); free(primes); return 0; }
int main(int argc, char *argv[]) { int max = atoi(argv[1]); clock_t start, end; start = clock(); int divnum = 0; int i = 2; unsigned long long triangle = 1; do { triangle += i; i++; divnum = numDivisors(triangle); } while (divnum <= max); end = clock(); printf("The answer to problem 12 is %lld\n", triangle); printf("The answer took %f seconds to get\n", (double)(end - start) / CLOCKS_PER_SEC); }