Bài toán liệt kê số nguyên tố nhỏ hơn n trong c

tối ưu code lại chút nè

//using -std=c11
#include <stdio.h>
#include <stdbool>
#include <math.h>

bool is_prime (int n) {
	if (2 == n) {
		return true;
	}

	//So chẵn khác 2 không phải là số nguyên tố
	//Số bé hơn 2 không phải là số nguyên tố
	if (n < 2 || 0 == n%2) {
		return false;
	}

	size_t end = (size_t) sqrt(n);

	for (size_t i = 3; i <= end; i += 2) {
		if (0 == n%i) {
			return false;
		}
	}
	
	return true;
}
int main() {
	printf("Nhap vao so nguyen n: ");
	int n;
	scanf("%d", &n);
	

	printf("\nCac so nguyen to nho hon %d la: \n", n);

	if (n > 2) {
		printf("2 ");
	}

	for (int i = 3; i < n; i += 2) {
		if (is_prime(i)) {
			printf("%d ", i);
		}
	}
}

4 Likes