Bird
Raised Fist0
DSA Cprogramming~5 mins

Check if Number is Prime in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a prime number?
A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself.
Click to reveal answer
intermediate
Why do we only check divisors up to the square root of a number when testing for primality?
Because if a number n is divisible by a number greater than its square root, it must also be divisible by a number smaller than the square root. So checking up to the square root is enough.
Click to reveal answer
beginner
What is the simplest method to check if a number is prime?
Try dividing the number by all integers from 2 up to the square root of the number. If none divide evenly, the number is prime.
Click to reveal answer
beginner
What should you return if the number is less than 2 in a prime check function?
Return false because numbers less than 2 are not prime by definition.
Click to reveal answer
beginner
In C, which data type is best to use for the number when checking primality?
Use an integer type like int or long depending on the range of numbers you want to check.
Click to reveal answer
Which number is NOT a prime number?
A2
B3
C4
D5
What is the smallest prime number?
A0
B2
C1
D3
When checking if 29 is prime, up to which number should you check for divisors?
A6
B14
C29
D5
If a number is divisible by 1 and itself only, it is:
APrime
BComposite
CEven
DOdd
Which of these is an efficient way to check primality?
ACheck divisibility up to sqrt(n)
BCheck divisibility up to n/2
CCheck divisibility up to n-1
DCheck divisibility only by 2
Explain how to check if a number is prime using a simple algorithm.
Think about dividing the number by smaller numbers.
You got /4 concepts.
    Why is it enough to check divisors only up to the square root of the number when testing primality?
    Consider how multiplication pairs work.
    You got /3 concepts.

      Practice

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

      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

        Only It has exactly two distinct positive divisors: 1 and itself. correctly states this definition. Options B, C, and D are incorrect because they describe properties that do not define prime numbers.
      3. Final Answer:

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

        Prime number = two divisors [OK]
      Hint: Prime numbers have only 1 and itself as divisors [OK]
      Common Mistakes:
      • Thinking all even numbers are prime
      • Confusing prime with composite numbers
      • Including 1 as a prime number
      2. Which of the following C code snippets correctly checks if a number n is prime?
      easy
      A. for(int i = 1; i < n; i++) { if(n % i == 0) return 0; } return 1;
      B. for(int i = 2; i <= n; i++) { if(n % i == 0) return 0; } return 1;
      C. for(int i = 2; i < n; i++) { if(n % i == 0) return 0; } return 1;
      D. for(int i = 2; i < n/2; i++) { if(n % i == 0) return 1; } return 0;

      Solution

      1. Step 1: Analyze loop range for divisor checking

        To check if n is prime, we test divisors from 2 up to n-1. for(int i = 2; i < n; i++) { if(n % i == 0) return 0; } return 1; uses i < n, which is correct.
      2. Step 2: Check return values and conditions

        for(int i = 2; i < n; i++) { if(n % i == 0) return 0; } return 1; returns 0 if a divisor is found, else returns 1 meaning prime. Other options have incorrect loop ranges or return values.
      3. Final Answer:

        for(int i = 2; i < n; i++) { if(n % i == 0) return 0; } return 1; -> Option C
      4. Quick Check:

        Loop from 2 to n-1 and return 0 if divisible [OK]
      Hint: Check divisors from 2 to n-1 for prime [OK]
      Common Mistakes:
      • Checking divisibility by 1
      • Looping up to n instead of n-1
      • Returning wrong values on divisor found
      3. What is the output of the following C code when n = 11?
      int isPrime(int n) {
        if (n <= 1) return 0;
        for (int i = 2; i < i * i <= n; i++) {
          if (n % i == 0) return 0;
        }
        return 1;
      }
      
      printf("%d", isPrime(n));
      medium
      A. 1
      B. Compilation error
      C. 0
      D. Infinite loop

      Solution

      1. Step 1: Analyze the for loop condition

        In C, relational operators (<, <=) associate left-to-right with same precedence. i < i * i <= n parses as (i < (i * i)) <= n. For i ≥ 2, i < i*i is true (1), so 1 <= n is true. Condition always true.
      2. Step 2: Runtime behavior

        Loop never terminates (infinite loop). No printf output.
      3. Final Answer:

        Infinite loop -> Option D
      4. Quick Check:

        (i < i*i) <= n always true [OK]
      Hint: C relational ops left-to-right: (i < i*i) <= n always true [OK]
      Common Mistakes:
      • Thinking chained comparisons cause compile error
      • Assuming Python-like chained comparison
      • Believing loop stops at sqrt(n)
      4. Find the error in this C function to check if n is prime:
      int isPrime(int n) {
        if (n <= 1) return 0;
        for (int i = 2; i <= n / 2; i++) {
          if (n % i = 0) return 0;
        }
        return 1;
      }
      medium
      A. Using assignment operator '=' instead of comparison '==' in if condition
      B. Loop should run till i < n, not n / 2
      C. Missing return statement at the end
      D. No error, code is correct

      Solution

      1. Step 1: Check the if condition inside the loop

        The condition uses n % i = 0 which is assignment, not comparison.
      2. Step 2: Understand impact of assignment in condition

        This causes a syntax error or unintended behavior. It should be n % i == 0 to compare.
      3. Final Answer:

        Using assignment operator '=' instead of comparison '==' in if condition -> Option A
      4. Quick Check:

        Use '==' for comparison, not '=' [OK]
      Hint: Use '==' to compare, '=' assigns value [OK]
      Common Mistakes:
      • Confusing '=' and '==' in conditions
      • Looping till n/2 is actually correct optimization
      • Ignoring compiler error messages
      5. You want to optimize prime checking for large n. Which change improves efficiency the most?
      int isPrime(int n) {
        if (n <= 1) return 0;
        for (int i = 2; i <= n / 2; i++) {
          if (n % i == 0) return 0;
        }
        return 1;
      }
      hard
      A. Change loop to run till i * i <= n instead of i <= n / 2
      B. Check divisibility only by even numbers
      C. Start loop from 1 instead of 2
      D. Remove the initial check for n <= 1

      Solution

      1. Step 1: Understand loop optimization for prime checking

        Checking divisors up to n/2 is inefficient. We only need to check up to the square root of n.
      2. Step 2: Apply loop condition using i * i <= n

        Changing the loop to run while i * i <= n reduces iterations and improves efficiency.
      3. Final Answer:

        Change loop to run till i * i <= n instead of i <= n / 2 -> Option A
      4. Quick Check:

        Check divisors up to sqrt(n) for efficiency [OK]
      Hint: Check divisors only up to square root of n [OK]
      Common Mistakes:
      • Checking even numbers only misses odd divisors
      • Starting loop from 1 wastes time
      • Removing base case causes wrong results
      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