Getting error: C programming- If a number is PRIME or not

Whats wrong in this code?
It is giving “Is a Prime Number” for 33,55,77,99,121,…etc.

#include <stdio.h>
void main() {
int i,x;
scanf("%d",&x);
for(i=2;i<x;i++)

    if(x%i==0)
    {       printf("Not a Prime Number");
    break;

}

    else {printf("Is a Prime Number");
    break;
    }

}

Add a bit of debugging info to shed some light on things:

#include <stdio.h>
int main() {
  int i, x;
  scanf("%d", &x);
  for (i = 2; i < x; i++)
  {
      printf("Checking if divisible by %d\n", i);

      if (x % i == 0) {
          printf("Not a Prime Number");
          break;

      }

      else {
          printf("Is a Prime Number");
          break;
      }
  }
}
3 Likes

Made some changes to your code

#include <stdio.h>
int main() {
  int i,x,flag=0;
  scanf("%d", &x);
  for (i = 2; i <= x/2; i++)
  {
      printf("Checking if divisible by %d\n", i);

      if (x % i == 0) {
          printf("Not a Prime Number");
          flag=1;
          break;

      }
  }
  if(flag==0) {
          printf("Is a Prime Number");
    }
    return 0;
}

1 Like

Thanks sir🙏

1 Like

I think there is error in this code too.
Its showing odd non-prime numbers (like 9,15,21,etc) as prime numbers.

Well this worked nicely.
But is there any way it can give output only as -“is a prime number” or “not a prime number”?

1 Like

As I said, that just added some debugging info so you could hopefully see precisely what was going wrong - it wasn’t intended to be a fix :slight_smile:

1 Like

Yes just comment the statement which is printing Checking if divisible by

#include <stdio.h>
int main() {
  int i, x,flag=0;
  scanf("%d", &x);
  for (i = 2; i <= x/2; i++)
  {
      //printf("Checking if divisible by %d\n", i);

      if (x % i == 0) {
          printf("Not a Prime Number");
          flag=1;
          break;

      }
  }
  if(flag==0) {
          printf("Is a Prime Number");
    }
    return 0;
}