/* -*- coding: utf-8 -*- * * 1006.cc: No.1006 Share an Integer - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_X = 2000000; /* typedef */ /* global variables */ int fs[MAX_X]; int as[MAX_X]; /* subroutines */ /* main */ int main() { int x; scanf("%d", &x); for (int i = 1; i < x; i++) fs[i] = i; for (int p = 1; p < x; p++) for (int i = p; i < x; i += p) fs[i]--; int mind = x, m = 0; for (int a = 1; a * 2 <= x; a++) { int b = x - a; int d = abs(fs[b] - fs[a]); //printf("a=%d, b=%d -> d=%d\n", a, b, d); if (mind > d) { mind = d; m = 0; as[m++] = a; if (b != a) as[m++] = b; } else if (mind == d) { as[m++] = a; if (b != a) as[m++] = b; } } sort(as, as + m); for (int i = 0; i < m; i++) printf("%d %d\n", as[i], x - as[i]); return 0; }