Style improvement
This commit is contained in:
68
C/p069.c
68
C/p069.c
@ -2,15 +2,15 @@
|
||||
* relatively prime to n. For example, as 1, 2, 4, 5, 7, and 8, are all less than nine and relatively prime to nine, φ(9)=6.
|
||||
*
|
||||
* n Relatively Prime φ(n) n/φ(n)
|
||||
* 2 1 1 2
|
||||
* 3 1,2 2 1.5
|
||||
* 4 1,3 2 2
|
||||
* 5 1,2,3,4 4 1.25
|
||||
* 6 1,5 2 3
|
||||
* 7 1,2,3,4,5,6 6 1.1666...
|
||||
* 8 1,3,5,7 4 2
|
||||
* 9 1,2,4,5,7,8 6 1.5
|
||||
* 10 1,3,7,9 4 2.5
|
||||
* 2 1 1 2
|
||||
* 3 1,2 2 1.5
|
||||
* 4 1,3 2 2
|
||||
* 5 1,2,3,4 4 1.25
|
||||
* 6 1,5 2 3
|
||||
* 7 1,2,3,4,5,6 6 1.1666...
|
||||
* 8 1,3,5,7 4 2
|
||||
* 9 1,2,4,5,7,8 6 1.5
|
||||
* 10 1,3,7,9 4 2.5
|
||||
*
|
||||
* It can be seen that n=6 produces a maximum n/φ(n) for n ≤ 10.
|
||||
*
|
||||
@ -26,41 +26,41 @@
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, res = 1;
|
||||
int i, res = 1;
|
||||
double elapsed;
|
||||
struct timespec start, end;
|
||||
struct timespec start, end;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &start);
|
||||
clock_gettime(CLOCK_MONOTONIC, &start);
|
||||
|
||||
i = 1;
|
||||
i = 1;
|
||||
|
||||
/* Using Euler's formula, phi(n)=n*prod(1-1/p), where p are the distinct
|
||||
* primes that divide n. So n/phi(n)=1/prod(1-1/p). To find the maximum
|
||||
* value of this function, the denominator must be minimized. This happens
|
||||
* when n has the most distinct small prime factor, i.e. to find the solution
|
||||
* we need to multiply the smallest consecutive primes until the result is
|
||||
* larger than 1000000.*/
|
||||
while(res < N)
|
||||
{
|
||||
i++;
|
||||
|
||||
if(is_prime(i))
|
||||
{
|
||||
res *= i;
|
||||
}
|
||||
}
|
||||
/* Using Euler's formula, phi(n)=n*prod(1-1/p), where p are the distinct
|
||||
* primes that divide n. So n/phi(n)=1/prod(1-1/p). To find the maximum
|
||||
* value of this function, the denominator must be minimized. This happens
|
||||
* when n has the most distinct small prime factor, i.e. to find the solution
|
||||
* we need to multiply the smallest consecutive primes until the result is
|
||||
* larger than 1000000.*/
|
||||
while(res < N)
|
||||
{
|
||||
i++;
|
||||
|
||||
if(is_prime(i))
|
||||
{
|
||||
res *= i;
|
||||
}
|
||||
}
|
||||
|
||||
/* We need the previous value, because we want i<1000000.*/
|
||||
res /= i;
|
||||
/* We need the previous value, because we want i<1000000.*/
|
||||
res /= i;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &end);
|
||||
clock_gettime(CLOCK_MONOTONIC, &end);
|
||||
|
||||
elapsed = (end.tv_sec-start.tv_sec) + (double)(end.tv_nsec - start.tv_nsec) / 1000000000;
|
||||
elapsed = (end.tv_sec-start.tv_sec) + (double)(end.tv_nsec - start.tv_nsec) / 1000000000;
|
||||
|
||||
printf("Project Euler, Problem 69\n");
|
||||
printf("Project Euler, Problem 69\n");
|
||||
printf("Answer: %d\n", res);
|
||||
|
||||
printf("Elapsed time: %.9lf seconds\n", elapsed);
|
||||
printf("Elapsed time: %.9lf seconds\n", elapsed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user