Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

printРабочее место участника

printЗадачи

1842. ABC-гипотеза

Ограничения: время – 3s/6s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В августе 2012 года японский математик Синити Мотидзуки опубликовал доказательство знаменитой ABC-гипотезы, которая была сформулирована в работах Массера и Эстерле в 80-х гг. XX века. Эта гипотеза оказалась весьма полезной при получении множество фундаментальных результатов теории чисел и алгебраической геометрии и, в частности, великая теорема Ферма может быть выведена в несколько строк как её следствие.
Для этой задачи необходимо понятие радикала. Радикалом числа rad(n) называется произведение всех простых множителей этого числа. Например, rad(24)=23=6. У этого числа есть несколько очевидных свойств. Например, если a и b взаимно просты, то есть не имеют общих делителей, отличных от единицы, то rad(ab) = rad(a)rad(b). Кроме этого, равенство rad(a)=a выполняется тогда и только тогда, когда a – произведение попарно различных простых чисел.
Рассмотрим тройки чисел (a, b, c), для которых a+b=c и все три числа взаимно просты. Так как числа a, b, c взаимно просты, то rad(abc)=rad(a)rad(b)rad(c). Массера и Эстерле заинтересовал вопрос: какое из чисел c или rad(abc) больше? Оказалось, что однозначного ответа на этот вопрос нет. Например, для тройки (2, 3, 5) rad(235)=235=30>5, а для тройки (1, 8, 9) rad(189)=rad(2332)=23=6<9.
Дальнейшие исследования позволили установить, что тройки первого типа встречаются намного чаще: если взять случайную тройку, то почти всегда будет выполняться именно первое неравенство. Поэтому тройки, для которых c>rad(abc), получили название исключительных. Удалось доказать, что таких троек бесконечно много, и даже построить бесконечную серию троек, у которой отношение radabcc стремится к 0.
Математикам удалось найти другое ограничение на возможные значения радикала, которое получило название "ABC-гипотеза": для любого действительного числа r>1 существует конечное число троек натуральных чисел (a, b, c) таких, что для них выполняются одновременно три условия: a+b=c; a, b и c взаимно просты и c>rad(abc)r.
Напишите программу для поиска исключительных троек, которая для заданного c находит все пары натуральных чисел (a, b), таких что a<b, a+b=c, числа a, b и c взаимно просты (достаточно проверить взаимную простоту любой пары из этой тройки) и rad(abc)<c.
Формат ввода
Первая строка ввода содержит натуральное число c (2  c  107).
Формат вывода
В первой строке вывести число K – количество найденных пар. Затем вывести K строк – найденные пары в порядке возрастания a.

Пример ввода

9

Пример вывода

1
1 8
loading