Code kiểm tra số nguyên tố bị sai các số dạng 3^n

code mình kiểm tra các số nguyên tố kia đúng, các hợp số khác cũng ra đúng, nhưng có chỉ 9,27,81(3^n) là bị lỗi: ví dụ như 9 kiểm tra lại ra là số nguyên tố

#include<stdio.h>
#include<math.h>
int SNT(int n)
{
	if(n==1) 
		return 0;
	else
		{
		for(int i=2;i<=(int)sqrt(n);i++)
			if(n%i==0)
					return 0;
			else 
				return 1;
		}

}
void main()
{
	int n;
	scanf("%d",&n);
	if(SNT(n)==0)
		printf("ko");
	else
		printf("co");
}

Code lởm quá. n không chia hết cho 2 nhưng chia hết cho 5 thì sao?

thì khi i tăng lên i==5 thì n%5==0 thì return 0=> ko phải số nguyên tố

Nhưng tại sao có else?

n = 35, (int)sqrt(n) = 5

i = 2 -> n % i != 0 -> dính vào else -> văng ngay return 1. Ổn không?

Cám ơn bạn nhiều mình đã hiểu rồi bây h chạy ok rồi

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?