A prime number is an integer greater than 1 with exactly two positive divisors: 1 and itself. A program does not need to test every divisor up to n - 1; it is enough to test possible factors up to the square root of the number.
#include <stdio.h>
int is_prime(int number) {
if (number < 2) {
return 0;
}
if (number == 2) {
return 1;
}
if (number % 2 == 0) {
return 0;
}
for (int divisor = 3;
divisor <= number / divisor;
divisor += 2) {
if (number % divisor == 0) {
return 0;
}
}
return 1;
}
int main(void) {
int number = 97;
printf("%d %s prime.\n",
number,
is_prime(number) ? "is" : "is not");
return 0;
}
The condition divisor <= number / divisor avoids the overflow risk of multiplying divisor * divisor for large int values.
#include <stdio.h>
int is_prime(int number) {
if (number < 2) {
return 0;
}
for (int divisor = 2;
divisor <= number / divisor;
divisor++) {
if (number % divisor == 0) {
return number == divisor;
}
}
return 1;
}
int main(void) {
for (int number = 2; number <= 100; number++) {
if (is_prime(number)) {
printf("%d ", number);
}
}
putchar('\n');
return 0;
}
#include <stdio.h>
int is_prime(int number) {
if (number < 2) {
return 0;
}
for (int divisor = 2;
divisor <= number / divisor;
divisor++) {
if (number % divisor == 0) {
return number == divisor;
}
}
return 1;
}
int main(void) {
int number;
printf("Enter an integer: ");
if (scanf("%d", &number) != 1) {
printf("Invalid input.\n");
return 1;
}
printf("%d %s prime.\n",
number,
is_prime(number) ? "is" : "is not");
return 0;
}
See factors of a number, if...else, and for loops.
Author & Instructor at plus2net
I write and maintain practical tutorials on Python, PHP, SQL, JavaScript, HTML, jQuery, and web development at plus2net. The tutorials focus on clear explanations, working examples, and code that readers can test and adapt while learning.