0
\$\begingroup\$

Although there was a prime factors challenge posted ten years ago, it has tedious I/O and restricted time. In this challenge, your task is to write a program or function which takes an integer \$n \ge 2\$ as input, and returns its prime factors.

Task:

Input will consist of an integer, \$n \ge 2\$. Your program should theoretically work for arbitrarily large numbers, but can fail due to limits like integer overflow.

Your program should print/return the prime factors (in any order), in any reasonable representation. For example, 180 could be represented as [2, 2, 3, 3, 5], or "2 3 5 2 3", or through any other collection type or string representation.

Test cases:

2 [2] 3 [3] 6 [2, 3] 12 [2, 2, 3] 25 [5, 5] 180 [2, 2, 3, 3, 5] 181 [181] 

Other:

Any trivial built-in answers should go in this community wiki.

This is , so shortest answer (in bytes) per language wins.

\$\endgroup\$
0

4 Answers 4

3
\$\begingroup\$

Javascript, 43 bytes

f=(n,i=2)=>n%i?n-1?f(n,i+1):"":i+" "+f(n/i) 

Outputs a space separated list with a trailing space. It dies pretty quickly due to recursion limits, partially because it restarts at 2 every time it finds a new prime.

\$\endgroup\$
1
\$\begingroup\$

Vyxal, 16 bytes

ʀǎ:£$vǑ¥Zƛ÷w$ẋ;f 

Try it Online at your own risk!

It is horrendously slow for large numbers, but it works

Explained

ʀǎ:£$vǑ¥Zƛ÷w$ẋ;f ʀǎ # nth prime for each item in the range [0 ... input - 1] :£ # put that into the register while leaving it on the stack $vǑ # get the divisbilty of each prime into the input ¥Z # and zip that with the register ƛ ; # for each item in that zipped list: (each item is: [divisbilty, prime factor]) ÷w # push divisbilty, [prime_factor] $ẋ # and repeat [prime_factor] divisibility times f # flatten the unholy mess that results from doing the above 
\$\endgroup\$
1
\$\begingroup\$

Trivial Answers (Community Wiki)

Edit: This challenge is closed. Please do not add solutions here; instead, consider creating a CW for trivial solutions on the dupe target, or just post your answer there as there are already many trivial solutions.

Vyxal, 1 byte

ǐ 

Try it Online!

Jelly, 2 bytes

Æf 

Try it online!

Factor + math.primes.factors, 7 bytes

factors 

Try it online!

05AB1E, 1 byte

Ò 

Try it online!

J, 2 bytes

q: 

Try it online!

\$\endgroup\$
0
\$\begingroup\$

Matlab, 17 bytes

factor(input('')) 
\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.