<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>수학 on Nyan101 Blog</title><link>https://nyan101.github.io/tag/%EC%88%98%ED%95%99/</link><description>Recent content in 수학 on Nyan101 Blog</description><generator>Hugo -- gohugo.io</generator><language>ko-KR</language><copyright>© nyan101</copyright><lastBuildDate>Wed, 27 May 2020 01:25:33 +0900</lastBuildDate><atom:link href="https://nyan101.github.io/tag/%EC%88%98%ED%95%99/feed.xml" rel="self" type="application/rss+xml"/><item><title>소인수분해 알고리즘(Pollard-(p-1), Pollard-rho, Dixon's Random Square)</title><link>https://nyan101.github.io/blog/algorithms-for-integer-factorization/</link><pubDate>Wed, 27 May 2020 01:25:33 +0900</pubDate><guid>https://nyan101.github.io/blog/algorithms-for-integer-factorization/</guid><description>&lt;p&gt;&lt;a href="https://nyan101.github.io/blog/algorithms-for-discrete-logarithm-problem" target="_blank" rel="noreferrer"&gt;지난번 글&lt;/a&gt;에서는 이산 로그 문제에 대해 다뤘으니 이번에는 소인수분해 문제를 해결하는 알고리즘에 대해 알아보자. 코드는 이전과 마찬가지로 아래와 같은 수정이 들어간 파이썬 문법을 따랐다.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;양 끝을 명시적으로 나타내기 위해 &lt;code&gt;range(st, ed+1)&lt;/code&gt; 대신 &lt;code&gt;[st...ed]&lt;/code&gt;와 같은 표기를 사용했다.&lt;/li&gt;&#10;&lt;li&gt;파이썬에서 거듭제곱을 나타내는 &lt;code&gt;a**b&lt;/code&gt; 대신 일반적으로 사용되는 &lt;code&gt;a^b&lt;/code&gt; 표기를 사용했다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;지난 이산 로그 문제와는 달리 &lt;del&gt;모두가 알 것이라 믿고&lt;/del&gt; 소인수분해 문제에 대한 자세한 설명은 생략한다. 또한 알고리즘 설계를 간단히 하기 위해 소인수분해 문제의 요구조건을 &lt;strong&gt;주어진 자연수 n에 대해, 1과 자기 자신(=n)을 제외한 약수를 발견하는 것&lt;/strong&gt;으로 정했다.&lt;/p&gt;</description></item><item><title>이산 로그 문제(DLP)에 대한 알고리즘(Shanks, Pollard-rho, Pohlig-Hellman)</title><link>https://nyan101.github.io/blog/algorithms-for-discrete-logarithm-problem/</link><pubDate>Fri, 08 May 2020 16:36:14 +0900</pubDate><guid>https://nyan101.github.io/blog/algorithms-for-discrete-logarithm-problem/</guid><description>&lt;p&gt;암호학, 특히 공개키 기반 암호시스템은 주로 1)소인수분해 문제 혹은 2)이산 로그 문제를 기반으로 설계되는 경우가 많다. 그중 이산 로그 문제와 이를 해결하는 알고리즘에 대해 알아보자. 예시로 든 코드는 기본적으로 파이썬 문법을 따라 작성했으며 가독성을 위해 다음과 같은 부분을 수정했다.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;파이썬에서 &lt;code&gt;range(n)&lt;/code&gt;은 0부터 시작해 n이 아닌 n-1까지를 포함한다. 양 끝을 명시적으로 나타내기 위해 &lt;code&gt;[st...ed]&lt;/code&gt;와 같은 표기를 사용했다.&lt;/li&gt;&#10;&lt;li&gt;파이썬에서 거듭제곱을 나타내는 &lt;code&gt;a**b&lt;/code&gt; 대신 일반적으로 사용되는 &lt;code&gt;a^b&lt;/code&gt; 표기를 사용했다.&lt;/li&gt;&#10;&lt;li&gt;mod p에서의 역원을 &lt;code&gt;a^(-1)&lt;/code&gt;로 표기했다. 실제 구현에서는 다음과 같이 구할 수 있다.&#10;&lt;ul&gt;&#10;&lt;li&gt;페르마 소정리에 의해 $a^{p-1} \equiv 1 \pmod p$이므로 $a\cdot a^{p-2} \equiv 1$에서 $a^{-1} \equiv a^{p-2}$&lt;/li&gt;&#10;&lt;li&gt;$p$가 소수가 아닌 경우, 확장 유클리드 알고리즘을 사용한다&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&#10;&lt;h2 class="relative group"&gt;이산 로그 문제&#10; &lt;div id="이산-로그-문제" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ec%9d%b4%ec%82%b0-%eb%a1%9c%ea%b7%b8-%eb%ac%b8%ec%a0%9c" aria-label="앵커"&gt;&lt;span class="heading-anchor-mark" aria-hidden="true"&gt;&lt;/span&gt;&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;이산 로그 문제는 이산 대수 문제라고도 하며, 순환군 $\langle g \rangle$와 군의 원시근(primitive root) $g$, 그리고 $y \in \langle g \rangle$ 가 주어졌을 때, $y=g^k$를 만족하는 최소의 자연수 $k$를 찾는 문제이다. 암호학에서는 큰 소수 $p$에 대해 $p$로 나눈 나머지들의 모임인 $\mathbb{Z}_p^\ast$를 사용하는 경우가 많다.&lt;/p&gt;</description></item><item><title>Möbius 함수의 정의와 활용</title><link>https://nyan101.github.io/blog/Mobius-function/</link><pubDate>Sun, 31 Mar 2019 21:38:49 +0900</pubDate><guid>https://nyan101.github.io/blog/Mobius-function/</guid><description>&lt;p&gt;얼마 전 코드포스에서 &lt;a href="http://codeforces.com/contest/1139/problem/D" target="_blank" rel="noreferrer"&gt;흥미로운 문제&lt;/a&gt;를 접했다. 대회 당시에는 풀지 못했는데, 에디토리얼을 읽어보던 중 뫼비우스 함수(Möbius function)에 대한 언급이 있어 이에 대해 좀더 자세히 알아보았다.&lt;/p&gt;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Möbius function의 정의&#10; &lt;div id="möbius-function의-정의" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#m%c3%b6bius-function%ec%9d%98-%ec%a0%95%ec%9d%98" aria-label="앵커"&gt;&lt;span class="heading-anchor-mark" aria-hidden="true"&gt;&lt;/span&gt;&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;뫼비우스 함수(Möbius function)는 자연수 n에 대해 다음과 같이 정의된다. (\(p\)는 소수)&lt;/p&gt;</description></item></channel></rss>