Golfscript, 68 67 62 61 ตัวอักษร
[.]({[.2@{1$1$%{)}{\1$/1$}if}*;;].,*0+{+}*.2$?@@.@+\@)!}do;,(
นี่คือนิพจน์: มันใช้n
กับสแต็กและทิ้งผลลัพธ์ไว้บนสแต็ก หากต้องการเปลี่ยนเป็นโปรแกรมที่ใช้n
จาก stdin และพิมพ์ผลลัพธ์เป็น stdout ให้แทนที่ส่วนนำ[
ด้วย~
หัวใจของมันคือ[.2@{1$1$%{)}{\1$/1$}if}*;;]
(28 ตัวอักษร) ซึ่งใช้จำนวนสูงสุดบนสแต็กและ (โดยอัลกอริทึมที่ไม่มีประสิทธิภาพอย่างไม่น่าเชื่อ) สร้างรายการของปัจจัยสำคัญ pseudocode เทียบเท่า C สไตล์:
ps = [], p = 2;
for (int i = 0; i < n; i++) {
if (n % p == 0) {
ps += p;
n /= p;
}
else p++;
}
0+
ก่อน{+}*
คือการจัดการกับกรณีพิเศษn==1
เพราะ Golfscript ไม่ชอบพับดำเนินการทวิภาคมากกว่ารายการที่ว่างเปล่า
หนึ่งในจุดตรึงที่ไม่ใช่นายกคือ 27; ฉันพบนี้โดยไม่ต้องใช้โปรแกรมโดยพิจารณาจากการทำแผนที่ (p 2 P) ซึ่งเป็น fixpoint ถ้า == P (a-1) / 2และพยายามเล็ก ๆ ( ให้ fixpointedness ของจำนวนเฉพาะ) ->
a
a==1
การค้นหาด้วยโปรแกรมจะเปลี่ยนจุดกำหนดที่สอง: 30 = (2 + 3 + 5) * 3
ภาคผนวก: พิสูจน์ได้ว่ามีจุดแก้ไขที่ไม่สำคัญเพียงสองจุดเท่านั้น
สัญกรณ์: sopfr(x)
คือผลรวมของปัจจัยสำคัญของx
ด้วยการทำซ้ำ (A001414) Omega(x)
คือจำนวนของปัจจัยสำคัญx
(A001222) ฟังก์ชันตัวตายตัวแทนของ Higley คือh(x) = sopfr(x) Omega(x)
สมมติว่าเรามี fixpoint N = h(N)
ซึ่งเป็นผลคูณของn=Omega(N)
primes
N = p_0 ... p_{n-1} = h(N) = n (p_0 + ... + p_{n-1})
ทฤษฎีจำนวนพื้นฐาน: n
แบ่งออกเป็นp_0 ... p_{n-1}
ดังนั้นในช่วงเวลาเหล่านั้นเป็นปัจจัยที่สำคัญของw=Omega(n)
n
WLOG w
เราจะพาพวกเขาจะเป็นครั้งสุดท้าย ดังนั้นเราสามารถหารทั้งสองข้างด้วยกันn
และได้
p_0 ... p_{n-w-1} = p_0 + ... + p_{n-1}
หรือ
p_0 ... p_{n-w-1} = p_0 + ... + p_{n-w-1} + sopfr(n)
ระบุว่าทั้งหมดของจำนวนเฉพาะp_0
ที่จะp_{n-w-1}
มีมากขึ้นกว่า 1, การเพิ่มใด ๆ ของพวกเขาเพิ่ม LHS มากกว่า RHS ดังนั้นสำหรับให้n
เราสามารถระบุการแก้ปัญหาของผู้สมัครทั้งหมด
โดยเฉพาะอย่างยิ่งจะไม่มีวิธีแก้ปัญหาถ้า LHS มากกว่า RHS ตั้งค่าเฉพาะ "ฟรี" เป็น 2 ทั้งหมดคือไม่มีวิธีแก้ปัญหาหาก
2^{n-w} > 2 (n-w) + sopfr(n)
ตั้งแต่sopfr(n) <= n
(ด้วยความเสมอภาคเท่านั้นสำหรับ n = 4 หรือ n ไพรม์) เราสามารถทำให้ข้อความที่อ่อนแอกว่าว่าไม่มี fixpoints หาก
2^{n-w} > 3 n - 2 w
โฮลดิ้งw
คงที่เราสามารถเลือกค่าที่แตกต่างกันของความพึงพอใจn
w=Omega(n)
ที่เล็กที่สุดเช่นมีn
2^w
โปรดทราบว่าถ้า2^{n-w}
อย่างน้อย 3 (เช่นถ้าn-w>1
ซึ่งเป็นจริงถ้าn>2
) จากนั้นเพิ่มขึ้นn
ในขณะที่การถือครองw
อย่างต่อเนื่องจะเพิ่ม LHS มากกว่า RHS โปรดสังเกตว่าสำหรับw>2
และการที่เล็กที่สุดเท่าที่เป็นไปได้n
ความไม่เท่าเทียมกันก็เป็นที่พอใจและไม่มีจุดแก้ไข
นั่นทำให้เรามีสามกรณี: w = 0
และn = 1
; w = 1
และn
เป็นนายก; หรือw = 2
และn
กึ่งนายก
กรณีw = 0
. n = 1
ดังนั้นN
นายกใด ๆ
กรณีw = 1
. ถ้าอย่างn = 2
นั้นN = 2p
และเราต้องการp = p + 2
ซึ่งไม่มีวิธีแก้ปัญหา หากn = 3
แล้วเรามีpq = p + q + 3
และสองการแก้ปัญหาและ(p=2, q=5)
(p=3, q=3)
หากn = 5
แล้วดังนั้นจะไม่มีการแก้ปัญหาต่อไปด้วย2^4 > 3 * 5 - 2 * 1
w = 1
กรณีw = 2
. หากn = 4
แล้วและเราจำเป็นต้องมีN = 4pq
pq = p + q + 4
นี่มีวิธีแก้ปัญหาจำนวนเต็มp=2, q=6
แต่ไม่มีวิธีแก้ปัญหาที่สำคัญ หากn = 6
แล้วดังนั้นจะไม่มีการแก้ปัญหาต่อไปด้วย2^4 > 3 * 6 - 2 * 2
w = 2
ทุกกรณีหมดแล้วดังนั้นจุดแก้ไขที่ไม่สำคัญเท่านั้นคือ 27 และ 30
highley(1) == 1
? ไม่มีสิ่งใดเป็นปัจจัยสำคัญดังนั้นรายการผลลัพธ์ใน 4)[1, 0]
จึงhighley(1) == 2
เป็นอย่างที่ฉันเห็น