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 ของจำนวนเฉพาะ) ->aa==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) nWLOG 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 * 1w = 1
กรณีw = 2. หากn = 4แล้วและเราจำเป็นต้องมีN = 4pq pq = p + q + 4นี่มีวิธีแก้ปัญหาจำนวนเต็มp=2, q=6แต่ไม่มีวิธีแก้ปัญหาที่สำคัญ หากn = 6แล้วดังนั้นจะไม่มีการแก้ปัญหาต่อไปด้วย2^4 > 3 * 6 - 2 * 2w = 2
ทุกกรณีหมดแล้วดังนั้นจุดแก้ไขที่ไม่สำคัญเท่านั้นคือ 27 และ 30
highley(1) == 1? ไม่มีสิ่งใดเป็นปัจจัยสำคัญดังนั้นรายการผลลัพธ์ใน 4)[1, 0]จึงhighley(1) == 2เป็นอย่างที่ฉันเห็น