Add problem 46 solution

This commit is contained in:
kevin
2019-02-10 23:03:40 -05:00
parent 67adedf4ad
commit 6b1a4ebbd1
2 changed files with 66 additions and 0 deletions

21
primes.h Normal file
View 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
View 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;
}