Số nguyên tố trong thừa số nguyên tố


9

Tôi đã thấy một thách thức chính khác xảy ra trong PPCG, và tôi yêu tôi một số nguyên tố. Sau đó, tôi đọc sai văn bản giới thiệu, và tự hỏi những gì bộ não sáng tạo ở đây đã nghĩ ra.

Hóa ra câu hỏi được đặt ra là tầm thường, nhưng tôi tự hỏi liệu điều đó có đúng với câu hỏi tôi (mis) đọc không:


6 có thể được biểu thị bằng 2 ^ 1 * 3 ^ 1 và 50 có thể được biểu thị bằng 2 ^ 1 * 5 ^ 2 (trong đó ^ biểu thị số mũ).

Nhiệm vụ của bạn:

Viết chương trình hoặc hàm để xác định có bao nhiêu số nguyên tố khác nhau trong biểu diễn số này.

Đầu vào:

Một số nguyên n sao cho 1 <n <10 ^ 12, được lấy bởi bất kỳ phương thức bình thường nào.

Đầu ra:

Số lượng các số nguyên tố riêng biệt được yêu cầu để biểu diễn các thừa số nguyên tố duy nhất của n.

Các trường hợp thử nghiệm:

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)

Đây không phải là một chuỗi OEIS.

Ghi điểm:

Đây là , điểm số thấp nhất tính bằng byte!


Kết quả mong đợi là 64gì? Là nó 2 (2,3)(vì 6 có thể được biểu diễn dưới dạng 2 * 3) hoặc 1 (2)(bỏ qua 6)?
Emigna

cho 64kết quả mong đợi là 1 (2). Tôi thích ý tưởng thực hiện nó một cách đệ quy, nhưng đó không phải là cách tôi đọc câu hỏi ban đầu. Tôi nghĩ 8640là một trường hợp thử nghiệm phù hợp, nhưng nên rõ ràng hơn - cảm ơn.
pbeentje

Bạn khẳng định đây không phải là một chuỗi OEIS. Có phải A001221, các giá trị của hàm omega (nhỏ) không?
Gray Taylor

A001221 tương tự, nhưng bắt đầu phân kỳ ở các điều khoản 8 và 9 (ở đây 2, A001221 1) vì bao gồm số mũ là số nguyên tố trong bài tập này.
pbeentje

Ah tôi thấy. Viết ra thừa số nguyên tố, sau đó xem tôi đã viết bao nhiêu số nguyên tố khác nhau (bất kể vai trò của chúng là gì). Tôi tự hỏi điều gì sẽ xảy ra nếu bạn tiến thêm một bước và tính đến số mũ ...
Gray Taylor

Câu trả lời:


5

Toán học, 39 byte

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

Hãy thử trực tuyến!

cảm ơn Martin Ender (-11 byte)


Caseshóa ra ngắn hơn Select(-4 byte): Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&(vượt qua tất cả các trường hợp thử nghiệm trên kernel mới)
JungHwan Min

Thế còn Count[Union@@FactorInteger@#,_?PrimeQ]&? (Không kiểm tra tất cả các trường hợp thử nghiệm.)
Martin Ender

@MartinEnder có vẻ như nó nên hoạt động. Vượt qua tất cả các trường hợp thử nghiệm quá.
JungHwan tối

5

05AB1E , 9 7 byte

Đã lưu 2 byte nhờ Kevin Cruijssen

ÓsfìÙpO

Hãy thử trực tuyến!

Giải trình

Ó        # 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 byte bằng cách sử dụng €pOsau khi hợp nhất các thừa số nguyên tố và số mũ:ÓsfìÙ€pO
Kevin Cruijssen

@KevinCruijssen: Cảm ơn! Thực tế tiết kiệm 2 vì không cần thiết.
Emigna

À, tất nhiên rồi .. Wow, không chắc là tôi đã bỏ lỡ điều đó như thế nào, haha ​​xD
Kevin Cruijssen



4

Gaia , 6 byte

ḋ_uṗ¦Σ

Hãy thử trực tuyến!


  • tính toán thừa số nguyên tố, như các cặp [số nguyên tố, số mũ] .

  • _ làm phẳng danh sách.

  • u loại bỏ các yếu tố trùng lặp.

  • ṗ¦ánh xạ qua các phần tử và trả về 1 nếu tìm thấy một số nguyên tố, 0 nếu không.

  • Σ tổng hợp danh sách.


3

CJam (13 byte)

{mFe__&:mp1b}

Bộ kiểm tra trực tuyến

Điều này khá đơn giản: lấy các số nguyên tố với bội số, giảm đến các giá trị riêng biệt, các số nguyên tố lọc, số đếm.

Đáng buồn thay Martin đã chỉ ra một số trường hợp không được xử lý bởi thủ thuật khá thú vị trong câu trả lời ban đầu của tôi, mặc dù anh ta cũng cung cấp tiết kiệm 1 byte bằng cách quan sát rằng từ khi mpđưa ra 0hoặc 1nó có thể được ánh xạ thay vì được lọc.










0

J, 20 byte

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

Đếm bằng tay lol, vì vậy hãy cho tôi biết nếu điều này được tắt.

Bất kỳ đề nghị chơi golf?

Bored nộp: làm phẳng bảng thừa số nguyên tố và đếm số nguyên tố.



0

Javascript (ES6), 145 byte

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}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.