about summary refs log tree commit diff
path: root/NTU/daugia.c
diff options
context:
space:
mode:
Diffstat (limited to 'NTU/daugia.c')
-rw-r--r--NTU/daugia.c34
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++;
+			}
+}