Hi, I wrote a code to check all the primes between 2 and 1002, but I for each nth number tested, I go from 2 to n-1. By running the program, I got 168 numbers, which is correct according to a website. However, I've read it that I only need to check until the square root of n, but I tried making that change in the inner for loop by choosing j < sqr(i), and it just finds the number 2 as a prime. Why is this happening? Thanks in advance!

Code:#include <stdio.h> #include <math.h> void primeFinder(void); int main(void) { printf("Prime numbers from 1 to 1000:\n\n"); primeFinder(); return 0; } void primeFinder(void) { int i; int j; int k; int n_primes = 0; //i is the number to be tested: for ( i = 2 ; i <= 1000 ; i++ ) { //i must be divided by j, that goes from 2 to i - 1 [(i - 2) divisions]: for ( j = 2, k = 0 ; j < i ; j++ ) { //i is not prime, whatever is the value of j: if ( i % j == 0 ) { //If remainder is 0, there is no need to test that i anymore: break; } else { k++; } } //End of inner for //i is prime: if ( k == i - 2 ) { printf("%d\t", i); n_primes++; } } //End of outer for printf("\n\nIt was found %d prime(s) in the inverval considered.\n", n_primes); }