diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-05-26 16:12:24 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-05-26 16:12:24 +0800 |
commit | 1c76beb0d4ccf57d2db84cf417f37a3a155fb905 (patch) | |
tree | 310bbc9bc48b2860f42b9994a62c38a1b91829b8 /euler58.c | |
parent | c98d66aca04d0d839833b6b81bf249822c4ca350 (diff) | |
download | project_euler-1c76beb0d4ccf57d2db84cf417f37a3a155fb905.tar.xz |
58, 76, 97, 104
Diffstat (limited to 'euler58.c')
-rw-r--r-- | euler58.c | 45 |
1 files changed, 45 insertions, 0 deletions
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 <stdio.h> + +/* + * 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); +} |