Bird
Raised Fist0
DSA Goprogramming~20 mins

Check if Number is Prime in DSA Go - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Prime Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Prime Check for 29
What is the output of this Go code that checks if 29 is prime?
DSA Go
package main
import "fmt"
func isPrime(n int) bool {
    if n <= 1 {
        return false
    }
    for i := 2; i*i <= n; i++ {
        if n%i == 0 {
            return false
        }
    }
    return true
}
func main() {
    fmt.Println(isPrime(29))
}
Atrue
Bfalse
Ccompile error
Druntime error
Attempts:
2 left
💡 Hint
Remember prime numbers are only divisible by 1 and themselves.
❓ Predict Output
intermediate
2:00remaining
Output of Prime Check for 1
What does this Go code print when checking if 1 is prime?
DSA Go
package main
import "fmt"
func isPrime(n int) bool {
    if n <= 1 {
        return false
    }
    for i := 2; i*i <= n; i++ {
        if n%i == 0 {
            return false
        }
    }
    return true
}
func main() {
    fmt.Println(isPrime(1))
}
Aruntime error
Btrue
Ccompile error
Dfalse
Attempts:
2 left
💡 Hint
Prime numbers are greater than 1.
🔧 Debug
advanced
2:00remaining
Find the Bug in Prime Check Code
This Go code is supposed to check if a number is prime but gives wrong output for 4. What is the bug?
DSA Go
package main
import "fmt"
func isPrime(n int) bool {
    if n <= 1 {
        return false
    }
    for i := 2; i < n; i++ {
        if n%i == 0 {
            return false
        }
    }
    return true
}
func main() {
    fmt.Println(isPrime(4))
}
AThe loop should run until i*i <= n, not i < n
BThe function should return true for n <= 1
CThe modulo operator % is used incorrectly
DThe function should start loop from i = 1
Attempts:
2 left
💡 Hint
Check the loop condition for efficiency and correctness.
🧠 Conceptual
advanced
2:00remaining
Why Check Divisors Only up to Square Root?
Why does the prime check loop only run until i*i <= n instead of i < n?
ABecause the loop needs to run fewer times to avoid runtime errors
BBecause any factor larger than sqrt(n) pairs with a smaller factor already checked
CBecause numbers larger than sqrt(n) are always prime
DBecause Go language requires loops to have square root conditions
Attempts:
2 left
💡 Hint
Think about factor pairs of a number.
❓ Predict Output
expert
2:00remaining
Output of Prime Check for Large Number 104729
What is the output of this Go code checking if 104729 is prime?
DSA Go
package main
import "fmt"
func isPrime(n int) bool {
    if n <= 1 {
        return false
    }
    for i := 2; i*i <= n; i++ {
        if n%i == 0 {
            return false
        }
    }
    return true
}
func main() {
    fmt.Println(isPrime(104729))
}
Acompile error
Bfalse
Ctrue
Druntime error
Attempts:
2 left
💡 Hint
104729 is a known prime number.

Practice

(1/5)
1. What does it mean for a number to be prime?
easy
A. It has more than two divisors.
B. It is divisible by 2 only.
C. It is an even number greater than 2.
D. It has exactly two distinct positive divisors: 1 and itself.

Solution

  1. Step 1: Understand the definition of prime number

    A prime number is a number greater than 1 that has no divisors other than 1 and itself.
  2. Step 2: Compare options with definition

    It has exactly two distinct positive divisors: 1 and itself. matches this definition exactly, while others describe incorrect properties.
  3. Final Answer:

    It has exactly two distinct positive divisors: 1 and itself. -> Option D
  4. Quick Check:

    Prime number = two divisors only [OK]
Hint: Prime means only divisible by 1 and itself [OK]
Common Mistakes:
  • Thinking even numbers are always prime
  • Confusing prime with odd numbers
  • Believing 1 is prime
2. Which of the following Go code snippets correctly checks if a number n is prime?
easy
A. for i := 2; i < n; i++ { if n%i == 0 { return false } } return true
B. for i := 2; i <= n; i++ { if n%i == 0 { return false } } return true
C. for i := 1; i < n; i++ { if n%i == 0 { return false } } return true
D. for i := 2; i < n/2; i++ { if n%i == 0 { return true } } return false

Solution

  1. Step 1: Analyze loop range for prime check

    We check divisors from 2 up to but not including n to find if n is divisible by any number other than 1 and itself.
  2. Step 2: Evaluate each option's correctness

    for i := 2; i < n; i++ { if n%i == 0 { return false } } return true correctly loops from 2 to n-1 and returns false if divisible. for i := 2; i <= n; i++ { if n%i == 0 { return false } } return true incorrectly includes n itself, always returning false. for i := 1; i < n; i++ { if n%i == 0 { return false } } return true starts from 1, which divides all numbers. for i := 2; i < n/2; i++ { if n%i == 0 { return true } } return false returns true on divisor found, which is wrong logic.
  3. Final Answer:

    for i := 2; i < n; i++ { if n%i == 0 { return false } } return true -> Option A
  4. Quick Check:

    Loop 2 to n-1 and check divisibility [OK]
Hint: Loop from 2 to n-1, return false if divisible [OK]
Common Mistakes:
  • Checking divisibility including n itself
  • Starting loop from 1 instead of 2
  • Returning true when divisor found
3. What will be the output of this Go function call: isPrime(11)?
func isPrime(n int) bool {
 if n <= 1 {
  return false
 }
 for i := 2; i*i <= n; i++ {
  if n%i == 0 {
   return false
  }
 }
 return true
}
medium
A. true
B. false
C. runtime error
D. infinite loop

Solution

  1. Step 1: Check input and loop condition

    Input n=11 is greater than 1, so function proceeds. Loop runs from i=2 while i*i <= 11 (i <= 3).
  2. Step 2: Test divisibility inside loop

    Check i=2: 11%2 != 0; i=3: 11%3 != 0. No divisor found, loop ends.
  3. Final Answer:

    true -> Option A
  4. Quick Check:

    11 is prime, function returns true [OK]
Hint: Check divisors up to sqrt(n) for efficiency [OK]
Common Mistakes:
  • Not handling n <= 1 correctly
  • Looping beyond sqrt(n)
  • Assuming 11 is not prime
4. Identify the bug in this Go function that checks if a number is prime:
func isPrime(n int) bool {
 if n <= 1 {
  return false
 }
 for i := 2; i < n/2; i++ {
  if n%i == 0 {
   return false
  }
 }
 return true
}
medium
A. Loop should run until i <= n, not i < n/2
B. Function should return true if n <= 1
C. Loop should run until i*i <= n for efficiency and correctness
D. The modulo operator % is used incorrectly

Solution

  1. Step 1: Analyze loop range and condition

    The loop runs from 2 to less than n/2, which is inefficient and may miss divisors for small n.
  2. Step 2: Suggest correct loop condition

    Looping until i*i <= n is both correct and efficient because any divisor larger than sqrt(n) pairs with a smaller divisor already checked.
  3. Final Answer:

    Loop should run until i*i <= n for efficiency and correctness -> Option C
  4. Quick Check:

    Use i*i <= n to check divisors [OK]
Hint: Check divisors up to sqrt(n) to fix bugs [OK]
Common Mistakes:
  • Looping only to n/2 misses some divisors
  • Returning true for n <= 1
  • Misusing modulo operator
5. You want to find all prime numbers up to 20 using Go. Which approach is best to optimize performance?
hard
A. Check divisibility for each number up to n-1 without optimization
B. Check each number from 2 to 20 using a function that tests divisibility up to sqrt(n)
C. Use a loop from 2 to 20 and mark all numbers as prime without checks
D. Only check even numbers for primality since odd numbers are not prime

Solution

  1. Step 1: Understand prime checking for multiple numbers

    Checking each number from 2 to 20 individually is necessary to find all primes.
  2. Step 2: Optimize divisibility checks

    Testing divisibility only up to sqrt(n) for each number reduces unnecessary checks and improves performance.
  3. Final Answer:

    Check each number from 2 to 20 using a function that tests divisibility up to sqrt(n) -> Option B
  4. Quick Check:

    Use sqrt(n) limit for each number check [OK]
Hint: Test divisibility up to sqrt(n) for each number [OK]
Common Mistakes:
  • Checking all numbers up to n-1 wastes time
  • Ignoring odd numbers which can be prime
  • Marking all numbers prime without checks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard