diff options
author | Raphael McSinyx <vn.mcsinyx@gmail.com> | 2016-10-08 09:56:43 +0700 |
---|---|---|
committer | Raphael McSinyx <vn.mcsinyx@gmail.com> | 2016-10-08 09:56:43 +0700 |
commit | 2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0 (patch) | |
tree | 95190a32ec1c7098494849eea5a5ba6b53289585 /NTU/daugia.c | |
parent | 207cc2ae9893b0cdecd20119b9ede37f73cd4a1e (diff) | |
download | cp-2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0.tar.gz |
Initial commit
Diffstat (limited to 'NTU/daugia.c')
-rw-r--r-- | NTU/daugia.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/NTU/daugia.c b/NTU/daugia.c new file mode 100644 index 0000000..4b26f50 --- /dev/null +++ b/NTU/daugia.c @@ -0,0 +1,34 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#define idx(n) (n - 1) / 2 - 1 + +int main() +{ + long a, b, count = 0, i, j, n; + scanf("%ld %ld", &a, &b); + + char *primes = malloc(b / 2 - 1); + for (i = 3; i < b; i += 2) + primes[idx(i)] = 1; + + for (i = 3; i < sqrtf((float) b); i += 2) { + if (primes[idx(i)]) + for (j = i * i; j < b; j += i * 2) + primes[idx(j)] = 0; + } + + char k; + for (i = 1; i < 10; i += 2) + for (j = 0; j < 10; j++) + for (k = 0; k < 10; k++) { + n = i * 10001 + j * 1010 + k * 100; + if (n >= b) { + printf("%ld\n", count); + return 0; + } + if (primes[idx(n)] && a <= n) + count++; + } +} |