Bird
Raised Fist0
DSA Goprogramming~10 mins

Check if Number is Prime in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to check if a number is less than 2.

DSA Go
if n [1] 2 {
    return false
}
Drag options to blanks, or click blank then click option'
A<
B>
C==
D>=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '>' instead of '<' causes wrong logic.
Checking equality to 2 only misses numbers less than 2.
2fill in blank
medium

Complete the for loop to check divisors from 2 up to n-1.

DSA Go
for i := 2; i [1] n; i++ {
    if n%i == 0 {
        return false
    }
}
Drag options to blanks, or click blank then click option'
A<=
B<
C>
D>=
Attempts:
3 left
💡 Hint
Common Mistakes
Using <= causes checking n itself, which is unnecessary.
Using > or >= causes the loop to never run.
3fill in blank
hard

Fix the error in the condition to check divisibility.

DSA Go
if n [1] i == 0 {
    return false
}
Drag options to blanks, or click blank then click option'
A-
B/
C*
D%
Attempts:
3 left
💡 Hint
Common Mistakes
Using '/' checks division but not remainder.
Using '*' or '-' are incorrect for divisibility.
4fill in blank
hard

Fill both blanks to optimize the loop to check divisors up to the square root of n.

DSA Go
for i := 2; i [1] int(math.Sqrt(float64(n)))+1; i[2] {
    if n%i == 0 {
        return false
    }
}
Drag options to blanks, or click blank then click option'
A<
B<=
C++
D--
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' causes extra unnecessary iteration.
Using '--' decrements i causing infinite loop.
5fill in blank
hard

Fill all three blanks to complete the prime check function with proper return and import.

DSA Go
package main

import (
    "fmt"
    "[1]"
)

func isPrime(n int) bool {
    if n < 2 {
        return [2]
    }
    for i := 2; i < int(math.Sqrt(float64(n)))+1; i[3] {
        if n%i == 0 {
            return false
        }
    }
    return true
}

func main() {
    fmt.Println(isPrime(17))
}
Drag options to blanks, or click blank then click option'
Amath
Bfalse
C++
Dfmt
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to import math causes error.
Returning true for n < 2 is wrong.
Using '--' instead of '++' causes infinite loop.

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