差分

ナビゲーションに移動 検索に移動

利用者:Nayuta Ito/素微分友愛数の研究の進展/独自研究

3,258 バイト追加, 2022年5月15日 (日) 15:32
\( L_1 \)は\( \varepsilon \)と\( a \)に依存することに注意せよ
以下、\( n > \geq L_1 \)とする
\( N \)に含まれる素因数が\( n \)個であるとする
よって\( N' \)の素因数の逆数の総和を\( T \)とすると
\( 0 < T < \frac{n(1+\varepsilon)+1}{n\log{n}} < \leq \frac{1+\varepsilon+\frac{1}{L_1}}{\log{n}} \)
が成り立つ
が成り立つ
$$ f(x) = \left( \frac{1+\varepsilon+\frac{1}{L_1}}{\log{x}} \right) \left( \sum_{k=1}^{L_1}\frac{1}{p_k} - \log{\log{L_1}} + \log{\log{(nx+xa)}} \right) $$
とし、
また、\( \lim_{n \rightarrow \infty} f(n) = 0 \)なので、ある\( L_3 \)が存在して\( x \geq L_3 \Rightarrow f(x) < 1 \)が成り立つ。
よって、\( n > \geq \max(L_2,L_3) \)のとき、\( N \)は素微分友愛数ではない。
===数値計算のために===
\( a \)を固定し、\( \varepsilon \)を増やすと、\( L_1 \)と\( L_2 \)は増加し、\( L_3 \)は減少する。は減少する。上記の定理から、\( x < \max(L_1, L_2, L_3) \)のときだけを調べればよい。よって、\( \max(L_1, L_2, L_3)) \)が最小となるように\( \varepsilon \)を取れば最適にできる。 ====Pythonのコード====aの値は1個ずつにしないとPaizaがタイムアウトするので注意 <pre># coding: utf-8# Your code here! from scipy.special import lambertwimport numpy as np def f1(x, a, e): return 2 * (x + a) * np.log(float(x)) def f2(x, a, e): return x ** (1 + e) def f3(x, a, b, e): return (a / np.log(float(x))) * (b + np.log(np.log(float(x + e)))) def getls(a, e): l1 = 0 if a > 0: l1bottom = 10 l1top = 20 # e^eより大きい値をセットする while f1(l1top, a, e) > f2(l1top, a, e): l1bottom *= 2 l1top *= 2 while l1top - l1bottom > 1: l1mid = (l1bottom + l1top) // 2 if f1(l1mid, a, e) > f2(l1mid, a, e): l1bottom = l1mid else: l1top = l1mid if f1(l1bottom, a, e) > f2(l1bottom, a, e): l1 = l1top else: l1 = l1bottom else: l1 = 2 capbbottom = 1 / 2 + 1 / 3 + (1 / 2 * (np.log(np.log(float(l1))) - np.log(np.log(2.0)))) - np.log(np.log(float(l1))) capbtop = 1 / 2 + 1 / 3 + (np.log(np.log(float(l1))) - np.log(np.log(2.0))) - np.log(np.log(float(l1))) l2top = int(np.exp(np.exp(1 - capbbottom))) + 1 capa = 1 + e + 1 / l1 capb = capbtop  l3bottom = l2top l3top = l3bottom * 2 while f3(l3top, capa, capb, e) > 1: l3top *= 2 while l3top - l3bottom > 1: l3mid = (l3bottom + l3top) // 2 if f3(l3mid, capa, capb, e) > 1: l3bottom = l3mid else: l3top = l3mid if f3(l3bottom, capa, capb, e) > 1: l3 = l3top else: l3 = l3bottom return [l1, l2top, l3] for a in range(1, 11): minl = 1000 mine = 0 minls = [] for e in np.linspace(0.1, 1.0000, 9001): ls = getls(a, e) l = max(ls[0], ls[1], ls[2]) if minl > l: minl = l mine = e minls = ls print(f"<tr><td>{a}</td><td>{mine}</td><td>{minls[0]}</td><td>{minls[1]}</td><td>{minls[2]}</td></tr>")</pre> ====結果====<table border="1"><tr><th>\( a \)</th><th>\( e \)</th><th>\( L_1 \)</th><th>\( L_2 \)</th><th>\( L_3 \)</th></tr><tr><td>1</td><td>0.5239</td><td>55</td><td>8</td><td>54</td></tr><tr><td>2</td><td>0.5283</td><td>55</td><td>8</td><td>55</td></tr><tr><td>3</td><td>0.5312</td><td>56</td><td>8</td><td>56</td></tr><tr><td>4</td><td>0.5338</td><td>57</td><td>8</td><td>57</td></tr><tr><td>5</td><td>0.5378</td><td>57</td><td>8</td><td>57</td></tr><tr><td>6</td><td>0.5401</td><td>58</td><td>8</td><td>58</td></tr><tr><td>7</td><td>0.5422</td><td>59</td><td>8</td><td>58</td></tr><tr><td>8</td><td>0.5459</td><td>59</td><td>8</td><td>59</td></tr><tr><td>9</td><td>0.5478</td><td>60</td><td>8</td><td>60</td></tr><tr><td>10</td><td>0.5495</td><td>61</td><td>8</td><td>60</td></tr></table> ・・・数値が非常にsusである。<s>susすぎてsus4になりそう</s>計算過程を見直すか?
Wikiいけめん
217

回編集

案内メニュー