Визначення
Квадратичні залишки
Ціле число називається квадратичним модулем залишку якщо існує ціле число таке, що:n x
Набір квадратичних залишків за модулем можна просто обчислити, переглянувши результати за .
Послідовність виклику
Ми визначаємо як мінімальну кількість однакового значення (r_0-r_1 + n) \ bmod n для всіх пар квадратичних залишків за модулем .
Перші 30 термінів:
Це A316975 (подано власноруч).
Приклад:
Квадратичні залишки за модулем дорівнюють , , , , і .
Для кожної пари цих квадратичних залишків обчислюємо , що веде до наступної таблиці (де зліва, а вгорі):
Мінімальна кількість випадків одного і того ж значення у наведеній вище таблиці - (для , , та ). Тому .
Ваше завдання
Ви можете:
- візьміть ціле число та надрукуйте або поверніть (або 0-індексований, або 1-індексований)
- візьміть ціле число та роздрукуйте або поверніть перших доданків послідовності
- не беруть жодного вводу і друкують послідовність назавжди
- Ваш код повинен мати можливість обробити будь-яке з 50 перших значень послідовності менше ніж за 1 хвилину.
- Враховуючи достатньо часу та пам'яті, ваш код теоретично повинен працювати для будь-якого додатного цілого числа, підтримуваного вашою мовою.
- Це код-гольф .
+n
всередині це (...)mod n
не впливає? Якщо так, це дуже дивно, що є частиною визначення.
(some_potentially_negative_value + n) mod n
.) Я думаю, що краще це мати в програмуванні, проте, оскільки ознака результату залежить від мови .
a_p = round(p/4)
рівнях вона дорівнює , що дає нам значення для всіх квадратних вільних чисел. Але ситуація здається складною для повноважень простих ліній, і 3 випадки 4 та 1 мод 4 випадки потрібно обробляти окремо.