From 1c76beb0d4ccf57d2db84cf417f37a3a155fb905 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Sat, 26 May 2018 16:12:24 +0800 Subject: 58, 76, 97, 104 --- euler58.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 euler58.c (limited to 'euler58.c') diff --git a/euler58.c b/euler58.c new file mode 100644 index 0000000..ac46073 --- /dev/null +++ b/euler58.c @@ -0,0 +1,45 @@ +#include + +/* + * delta = 4n+4 delta = 4n+2 + * 5 3 + * [1] + * 7 9 + * delta = 4n+6 delta = 4n+8 + */ + +int isprime(int n) +{ + if (n == 1 || n % 2 == 0) + return 0; + + for (int i = 3; i * i <= n; i += 2) { + if (n % i == 0) + return 0; + } + + return 1; +} + +int main() +{ + int ndiag = 5; + int nprime = 3; + int s[4] = {3, 5, 7, 9}; + int n = 2; + + while (nprime * 10 > ndiag) { + s[0] += n * 4 + 2; + s[1] += n * 4 + 4; + s[2] += n * 4 + 6; + s[3] += n * 4 + 8; + for (int i = 0; i < 4; i++) { + if (isprime(s[i])) + nprime++; + } + ndiag += 4; + n += 2; + } + int sidelen = n + 1; + printf("%d\n", sidelen); +} -- cgit v1.2.3