จำนวนเฉพาะในตัวประกอบที่สำคัญ


9

ฉันเห็นความท้าทายที่สำคัญอีกอย่างหนึ่งที่มาจาก PPCG และฉันรักฉันในช่วงเวลาที่เหมาะสม จากนั้นฉันก็อ่านข้อความเกริ่นนำผิดและสงสัยในสิ่งที่สมองสร้างสรรค์ได้เกิดขึ้น

ปรากฎว่าคำถามที่ถูกวางเป็นเรื่องเล็กน้อย แต่ฉันสงสัยว่าเหมือนกันกับคำถามที่ฉันอ่านผิด (mis):


6 สามารถแทนด้วย 2 ^ 1 * 3 ^ 1 และ 50 สามารถแทนได้ด้วย 2 ^ 1 * 5 ^ 2 (โดยที่ ^ หมายถึง exponention)

งานของคุณ:

เขียนโปรแกรมหรือฟังก์ชั่นเพื่อกำหนดจำนวนช่วงเวลาที่แตกต่างกันในการแทนตัวเลข

การป้อนข้อมูล:

จำนวนเต็ม n เช่นที่ 1 <n <10 ^ 12 ถ่ายโดยวิธีปกติ

เอาท์พุท:

จำนวนเฉพาะช่วงเวลาที่จำเป็นต้องใช้เพื่อแสดงถึงปัจจัยเฉพาะที่สำคัญของ n

กรณีทดสอบ:

Input      Factorisation      Unique primes in factorisation representation
24         2^3*3^1            2 (2, 3)
126        2^1*3^2*7^1        3 (2, 3, 7)
8          2^3                2 (2, 3)
64         2^6                1 (2) (6 doesn't get factorised further)
72         2^3*3^2            2 (2, 3)
8640       2^6*3^3*5^1        3 (2, 3, 5)
317011968  2^11*3^5*7^2*13^1  6 (2, 3, 5, 7, 11, 13)
27         3^3                1 (3)

นี่ไม่ใช่ลำดับ OEIS

เกณฑ์การให้คะแนน:

นี่คือ คะแนนต่ำสุดเป็นไบต์ชนะ!


ผลลัพธ์ที่คาดหวัง64คืออะไร มัน2 (2,3)เป็น (เป็น 6 สามารถแสดงเป็น 2 * 3) หรือ1 (2)(ไม่สนใจ 6)?
Emigna

สำหรับ64ผลลัพธ์ที่คาดหวังคือ 1 (2) ฉันชอบความคิดในการทำแบบวนซ้ำ แต่นั่นไม่ใช่วิธีที่ฉันอ่านคำถามดั้งเดิม ฉันคิดว่า8640เป็นกรณีทดสอบที่เหมาะสม แต่น่าจะชัดเจนกว่านี้ - ขอบคุณ
pbeentje

คุณอ้างว่านี่ไม่ใช่ลำดับ OEIS ไม่ใช่ A001221, ค่าของฟังก์ชั่นโอเมก้า (เล็ก) หรือไม่?
สีเทาเทย์เลอร์

A001221 คล้ายกัน แต่เริ่มเบี่ยงเบนที่ข้อ 8 และ 9 (ที่นี่ 2, A001221 1) เนื่องจากการรวมเลขชี้กำลังเป็นนายกในแบบฝึกหัดนี้
pbeentje

อ่าฉันเข้าใจแล้ว เขียนปัจจัยสำคัญลงไปแล้วดูว่ามีช่วงเวลาที่แตกต่างกันเท่าใดที่ฉันเขียน (โดยไม่คำนึงถึงบทบาทที่พวกเขาเล่น) ฉันสงสัยว่าจะเกิดอะไรขึ้นถ้าคุณก้าวไปอีกขั้นและแยกตัวประกอบ ...
เทาเทย์เลอร์

คำตอบ:


5

Mathematica ขนาด 39 ไบต์

Count[Union@@FactorInteger@#,_?PrimeQ]&

ลองออนไลน์!

ขอบคุณ Martin Ender (-11 ไบต์)


Casesกลายเป็นสั้นกว่าSelect(-4 ไบต์): Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&(ผ่านกรณีทดสอบทั้งหมดในเคอร์เนลใหม่)
JungHwan Min

แล้วไงCount[Union@@FactorInteger@#,_?PrimeQ]&ล่ะ (ยังไม่ได้ตรวจสอบทุกกรณีทดสอบ)
Martin Ender

@MartinEnder ดูเหมือนว่ามันควรจะทำงาน ผ่านกรณีทดสอบทั้งหมดด้วย
JungHwan Min

5

05AB1E , 9 7 ไบต์

บันทึก 2 ไบต์ขอบคุณKevin Cruijssen

ÓsfìÙpO

ลองออนไลน์!

คำอธิบาย

Ó        # push the prime factor exponents of the input
 sfì     # prepend the prime factors of the input
    Ù    # remove duplicates
     p   # check each if it is prime
      O  # sum

1
-1 ไบต์โดยใช้€pOหลังจากผสานปัจจัยสำคัญและเลขชี้กำลัง:ÓsfìÙ€pO
Kevin Cruijssen

@KevinCruijssen: ขอบคุณ! ประหยัด 2 จริงเพราะไม่จำเป็น
Emigna

อ่าแน่นอน .. ว้าวไม่แน่ใจว่าฉันพลาดไปได้ยังไงฮ่าฮ่า xD
Kevin Cruijssen


4

เยลลี่ ,  9  7 ไบต์

ÆFFQÆPS

ลองออนไลน์! หรือตรวจสอบชุดทดสอบ

อย่างไร?

ÆFFQÆPS ~ โปรแกรมเต็มรูปแบบ

factorF ~ การแยกตัวประกอบเฉพาะเป็นคู่ [นายก, เลขชี้กำลัง]
  F ~ แผ่
   Q ~ ซ้ำซ้อน
    eachP ~ สำหรับแต่ละคนให้ตรวจสอบว่ามันยอดเยี่ยมหรือไม่ 1 ถ้าเป็นจริง, 0 ถ้าเป็นเท็จ
      S ~ Sum

4

Gaiaขนาด 6 ไบต์

ḋ_uṗ¦Σ

ลองออนไลน์!


  • คำนวณตัวประกอบที่สำคัญเช่น[นายกตัวแทน]คู่

  • _ ทำให้รายการเรียบ

  • u ลบองค์ประกอบที่ซ้ำกัน

  • ṗ¦แม็พผ่านอิลิเมนต์และส่งคืน1หากพบไพรม์, 0 เป็นอย่างอื่น

  • Σ สรุปรายการ


3

CJam (13 ไบต์)

{mFe__&:mp1b}

ชุดทดสอบออนไลน์

นี่ตรงไปตรงมา: รับจำนวนเฉพาะด้วยหลายหลากลดค่าที่แตกต่างกำหนดช่วงกรองนับ

Sadly Martinชี้ให้เห็นบางกรณีที่ไม่ได้รับการจัดการโดยเคล็ดลับที่น่าสนใจอย่างอ่อนโยนในคำตอบดั้งเดิมของฉันแม้ว่าเขาจะให้การประหยัด 1 ไบต์โดยการสังเกตว่าตั้งแต่mpให้0หรือ1สามารถแมปแทนที่จะกรอง










0

J, 20 ไบต์

3 :'+/1 p:~.,__ q:y'

นับด้วยมือฮ่า ๆ ๆ บอกฉันทีว่านี่ปิด

ข้อเสนอแนะการเล่นกอล์ฟใด ๆ ?

การส่งที่น่าเบื่อ: แผ่ตารางการแยกตัวประกอบนายกและจำนวนเฉพาะ



0

Javascript (ES6), 145 ไบต์

n=>{for(a=[b=l=0],q=n,d=2;q>=2;)q%d?(b&&(a.push(0),l++),d++,b=0):(q/=d,a[l]++,b=1);for(i in a){for(d=1,e=a[i];e%d;d++);e-d||n%e&&l++};return l+1}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.