Add problem 46 solution
This commit is contained in:
21
primes.h
Normal file
21
primes.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
int is_prime(long num)
|
||||||
|
{
|
||||||
|
int i = 5;
|
||||||
|
int w = 2;
|
||||||
|
|
||||||
|
if (num == 1)
|
||||||
|
return 0;
|
||||||
|
if (num == 2 || num == 3)
|
||||||
|
return 1;
|
||||||
|
if (!(num%2) || !(num%3))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
while ((i*i) <= num) {
|
||||||
|
if (!(num%i))
|
||||||
|
return 0;
|
||||||
|
i += w;
|
||||||
|
w = 6 - w;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
45
problem-46.c
Normal file
45
problem-46.c
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "primes.h"
|
||||||
|
|
||||||
|
int next_prime(int num)
|
||||||
|
{
|
||||||
|
num++;
|
||||||
|
while (1)
|
||||||
|
if (is_prime(num)) {
|
||||||
|
return num;
|
||||||
|
} else {
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int check(int num)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int prime = 2;
|
||||||
|
|
||||||
|
while (prime < num) {
|
||||||
|
for (i=1; i<(num-prime+1); i++)
|
||||||
|
if (num == prime+2*(i*i))
|
||||||
|
return 1;
|
||||||
|
prime = next_prime(prime);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
int i = 9; /* First odd composite */
|
||||||
|
while (1) {
|
||||||
|
if (!(check(i)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
do {
|
||||||
|
i += 2;
|
||||||
|
} while (is_prime(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("The solution is %d\n", i);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user