#include int vysledek_x, vysledek_y; int a_nevi(int soucin) { int rozklad = 0; for (int i = 2; (i <= 99) && (i*i <= soucin); i++) if ((soucin % i == 0) && (soucin/i <= 99)) rozklad++; if (rozklad >= 2) return 1; else return 0; } int b_vi_ze_a_nevi(int soucet) { for (int i = 2; (i <= 99) && (2*i <= soucet); i++) if (!a_nevi(i*(soucet-i))) return 0; return 1; } int a_uz_vi(int soucin) { int rozklad = 0; if (!a_nevi(soucin)) return 0; for (int i = 2; (i <= 99) && (i*i <= soucin); i++) { if ((soucin % i == 0) && (b_vi_ze_a_nevi(soucin/i + i))) rozklad++; if (rozklad > 1) break; } if (rozklad == 1) return 1; else return 0; } int b_taky_vi(int soucet) { int rozklad = 0; if (!b_vi_ze_a_nevi(soucet)) return 0; for (int i = 2; (i <= 99) && (2*i <= soucet); i++) if (a_uz_vi(i*(soucet-i))) { rozklad++; vysledek_x = i; vysledek_y = soucet - i; } if (rozklad == 1) return 1; else return 0; } int main(void) { for (int i=2; i<=198; i++) if (b_taky_vi(i)) printf("(%d, %d)\n", vysledek_x, vysledek_y); return 0; }