Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Notifications
Mark all as read
Challenges

Determine whether an integer is square-free

+4
−0

An integer is called square-free if it is not a multiple of a perfect square other than 1. For example, 42 is square-free, but 44 is not because it is a multiple of the perfect square 4 = 2².

Your task is to write a program or function that takes a positive integer, and returns a truthy value if the integer is square-free and a falsey value otherwise.

This is code golf, the shortest code wins.

The square-free numbers are OEIS sequence A005117 (thanks to Razetime for pointing this out).

Some test cases:

  1  true
  2  true
  3  true
  4  false
  5  true
  6  true
  7  true
  8  false
  9  false
 10  true
 12  false
 14  true
 16  false
 18  false
 20  false
 30  true
 40  false
 50  false
100  false
110  true
111  true
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

2 comment threads

Testcases? (2 comments)
[relevant oeis](http://oeis.org/A005117) (2 comments)

8 answers

You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.

+2
−0

Ruby, 27 bytes

->n{(2..n).all?{n%_1**2>0}}

Try it online

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+3
−0

Scala, 41 bytes

x=>2 to x forall(d=>x%d+math.sqrt(d)%1>0)

Try it online!

Pretty straightforward

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+2
−0

Python3, 39 bytes

lambda n:all(n%i**2for i in range(2,n))

Try it online!

Makes a list comprehension from the numbers 2 through n of the remainder of the square, and then checks whether the list contains 0

-8 bytes thanks to celtschk‭
-5 bytes thanks to Moshi

Why does this post require moderator attention?
You might want to add some details to your flag.

2 comment threads

not 0 in X => all X (2 comments)
Possible improvements (5 comments)
+2
−0

Vyxal, 4 bytes

K∆²a

Try it Online!

Outputs 0 for square-free, 1 for not.

K    # Factors
 ∆²  # Is perfect square
   a # Any true?
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+1
−0

MATL, 6 bytes

YftuX=

Try it online!

Same method as Moshi.

YftuX=
Yf      - factor with implicit input
   t    - duplicate
    u   - unique
     X= - isequal
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+1
−0

J, 17 bytes

{{*./y|~*:2+i.y}}

Try it online!

A direct definition closest to Razetime's infuriatingly good train solution. Outputs a non-zero number for true and 0 for false.

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+1
−0

BQN, 13 bytesSBCS

∧´0≠⊢|˜·×˜2+↕

Run online!

A train submission. It's 2 bytes shorter than the lambda version {∧´0≠𝕩|˜×˜2+↕𝕩}, due to omitting curly braces.

The idea is similar to ruby:

  • range 2..n+1
  • square it, then modulo n
  • are all remainders ≠ 0?
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+0
−0

Japt, 7 bytes

k ä!= e

Try it

First time doing Japt so this is probably pretty bad. Just factorizes and checks that there are no duplicate factors.

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »

This community is part of the Codidact network. We have other communities too — take a look!

You can also join us in chat!

Want to advertise this community? Use our templates!

Like what we're doing? Support us! Donate