У меня есть упражнение, которое требует найти программу, в которой вы должны найти, если N! делится на N^2.
1 ≤ N ≤ 10^9
Я хотел это с помощью простого способа создания факториальной функции и деления его на мощность N, но, очевидно, это не сработает. Просто алгоритм или псевдо-код будет достаточноНайти, если N! деление на n^2
ответ
Для любого n > 4
, если n
является prime
, то n!
не равномерно делится на n^2
.
Вот простое объяснение, чтобы поддержать мой аргумент:
После n!
делится на n
, мы остались с (n-1)!
в числителе, который должен быть разделен на n
. Поэтому нам нужно n
или несколько из n
в числителе для того, чтобы (n-1)!
был равномерно делимым на n
, чего не может быть, когда n
является простым.
В то время как вышесказанное всегда будет иметь место, когда n
является несвязанным. Проверьте это для себя, погрузившись в бит . Теория чисел
Надеюсь, что это поможет !!!
Редактировать: Вот простой код Python для вышесказанного. Сложность O(sqrt(N))
:
def checkPrime(n):
i = 2
while i<n**(1/2.0):
if n%i == 0:
return "Yes" # non-prime, so it's divisible
i = i + 1
return "No" # prime, so not divisible
def main():
n = int(raw_input())
if n==1:
print "Yes"
elif n==4:
print "No"
else:
print checkPrime(n)
main()
Вход:
7
Выход:
No
Это связано, хотя легче, чем Wilson's Theorem, который говорит о том, что число n > 1
является простым, если и только если
(n-1)! = -1 (mod n)
Это алгебраически эквивалентно тому, что n>1
первична тогда и только тогда, когда
n! = -n (mod n^2)
Кроме того, известно и легко доказать, что (цитата в статье Википедии)
За исключением 4, где 3! = 6 ≡ 2 (mod 4), если n равно композит, тогда (n - 1)! совпадает с 0 (mod n).
Следовательно, с единственным исключением 4, если n
составное, (n-1)! = 0 (mod n)
следовательно n! = 0 (mod n^2)
и если n
простое, n! = -n = n^2-n (mod n^2)
поэтому n!
не конгруэнтны 0
в этом случае.
Полная мощность теоремы Вильсона необходимо, если вы хотите, чтобы показать, что для простых n
, n!
оставляет остаток точно n^2-n
при делении на n^2
. Для этой проблемы все, что вам нужно знать, это то, что она не равна нулю.
В любом случае вы могли бы просто написать программу, которая проведет проверку подлинности, хотя независимо от того, будет ли она считаться допустимым решением, зависит от того, кто ее назначил.
- 1. Разделение дважды на N быстрее, чем деление на N^2?
- 2. Создание веб-форм Приложение N2 CMS на основе шаблонов N2
- 3. Если деление на ноль не показывает ошибку
- 4. Сжатие {| n1, n2 | n1^n2} в Ruby
- 5. Деление на ноль на applyTransformation
- 6. C++ деление на ноль
- 7. Ошибка: Деление на ноль (Haskell)
- 8. Деление даты на Excel
- 9. Деление на db2?
- 10. ZeroDivisionError: деление на ноль
- 11. Perl незаконное деление на ноль
- 12. Оптимизация N2 CMS
- 13. N2 Настроить логин входа
- 14. НКУ: деление на ноль
- 15. деление целое на k частей
- 16. Деление на 100 точность
- 17. Деление на ноль предотвращение
- 18. Scala: Деление на ноль
- 19. Деление на 0 аномалией
- 20. Если T (n) = θ (n^2) равно T (n) = 0 (n)?
- 21. Целочисленное деление на 7
- 22. ArithmeticException деление на ноль
- 23. Предоставляет ли стандарт C++ 11 «n2 is int &» с помощью «auto n2 = const_cast <int &>(n);»?
- 24. Управление ролями в N2
- 25. Проблема с StringFormat «N2» (?
- 26. Я пытаюсь найти n-й бинарный палиндром
- 27. python: деление числа на массив numpy
- 28. деление на Яве
- 29. Деление на ассемблере x86
- 30. Условное деление на R
Поскольку это проблема домашней работы, можете ли вы рассказать нам, что вы пробовали до сих пор и где конкретно вы застряли? –
Является ли 'n' и' N' в вашем вопросе одинаковым номером? – Henry
@JohnFeminella я упомянул о том, что пытался сделать стандартный способ создания факториальной функции и делить его на 'pow (n, 2)', но это не сработало.Becuse N может быть до 1 миллиарда –