Cần giúp đỡ tìm chỗ sai trong kiểm tra số nguyên tố

#include <stdio.h>
char KTNT(int n)
{
	if(n<2)
	return 0;
	else
	{
		int u;
		for(int i=0;i<=n;i++)
		if(n%i==0)
		u++;
		if(u==2)
		return 1;
		else
		return 0;
	}
}
void InSoNguyenTo(int n,int a[50])
{
	for(int i=0;i<n;i++)
	if	(KTNT(a[i])==1)
	printf("So nguyen to la : %d",a[i]);
}
void NhapMang(int &n, int a[50])
{
	do
	{
	printf("nhap vao so phan tu : ");
	scanf("%d",&n);
	}while(!(n>=3&&n<=50));
	printf("nhap vao so thuc cho %d phan tu :",n);
	for(int i=0;i<n;i++)
	do
	{
		printf("a[%d] : ",i);
		scanf("%d",&a[i]);
	}while(!(a[i]>0));
}
void XuatMang(int &n, int a[50])
{
	printf("gia tri ban da nhap la : ");
	for(int i=0;i<n;i++)
	printf("\t%d",a[i]);
}
int main()
{
	int a[50];
	int n;
	NhapMang(n,a);
	XuatMang(n,a);
	InSoNguyenTo(n,a);
	return 0;
}

Bạn thử chạy bằng tay coi kết quả ntn?
Bạn hiểu ý tôi chứ?

2 Likes

Bị lỗi chia cho 0 rồi bạn. Vòng lặp for i chạy từ 0 mà bạn lại ktra n%i ==0. Mình thấy kiểm tra số nguyên tố có rất nhiều hướng dẫn trên mạng rất hay bạn nên search gg và tham khảo.

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