Nhờ gợi ý đoạn code tìm số nguyên tố lớn nhất trong danh sách liên kết

Anh/chị giúp em đoạn code nay với. Đề bài yêu cầu là tìm số nguyên tố lớn nhất,khả năng em làm chỉ tới đây thôi ạ. Nhờ anh/chị giúp em, em xin cám ơn ạ ^^

#include<stdio.h>
#include<conio.h>
struct node
{
	int data;
	node *next;
};
struct list
{
	node *head;
	node *tail;
};
node *getnode(int x)
{
	node *p;
	p=new(node);
	if(p==NULL)
	{
		printf("\n khong du bo nho");
		return NULL;
	}
	p->data=x;
	p->next=NULL;
	return p;
}
void Init(list &l)
{
	l.head=l.tail=NULL;
}
void addtail(list &l,node *new_e)
{
	if(l.head==NULL)
	l.head=l.tail=new_e;
	else
	l.tail->next=new_e;
	l.tail=new_e;
}
void Nhap (list &l)
{
	int i,x,n;
	node *p;
	printf("Nhap so luong: ");scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("\n a[%d]: ",i);
		scanf("%d",&x);
		p=getnode(x);
		addtail(l,p);
	}
}
void Xuat(list &l)
{
	node *p;
	p=l.head;
	while(p!=NULL)
	{
		printf("%d    ",p->data);
		p=p->next;
	}
}
void them_dau(list &l,node * new_e)
{
	node *p;
	if(l.head==NULL)
	l.head=l.tail=new_e;
	else
	{
		new_e->next=l.head;
		l.head=new_e;
	}
}
void them_cuoi(list &l,node *new_e)
{
	if(l.head==NULL)
	l.head=l.tail=new_e;
	else
	{
		l.tail->next=new_e;
		l.tail=new_e;
	}
}
int max(list l)
{
	node *p;
	int solonnhat;
	solonnhat=l.head->data;
	p=l.head;
	while(p!=NULL)
	{
		if(solonnhat < p->data)
		{
			solonnhat=p->data;
		}
		else
		{
			p=p->next;
		}
	}
	return solonnhat;
}
int main()
{
	int solon;
    int chan;
	list l;
	node *p;
	Init (l);
	Nhap(l);
	Xuat(l);
}

Đã có ai tìm được số nguyên tố lớn nhất chưa? Hay là bạn đưa đề chưa đầy đủ?

2 Likes

Số nguyên hay Số nguyên tố? Khác nhau đấy nhé.

Theo bài làm của bạn thì bạn đang tìm số lớn nhất từ DSLK.

Nếu yêu cầu là tìm Số nguyên tố lớn nhất thì nó là vô cùng. Không tìm được nhé.

1 Like

Da là số nguyên tố lớn nhất ạ

Da là đề của thầy em đưa ra

Bạn phải xác định khả năng là không có số nguyên tố nào trong đó :smiley: sau đó là code :slight_smile: có khi phải quay lại bài tập tìm max có điều kiện rồi.

2 Likes

dạ nhưng đề bài thầy em đưa ra là tìm số nguyên tố max nên em cũng bó tay anh ạ

Thầy của bạn sai rồi, lên nói như thế.

1 Like

Dạ em cảm ơn anh/chị đã giúp đỡ em.

Viết thêm doạn code kiểm tra số nguyên tố, đây là đoạn code tìm số nguyên tố lớn nhât trong mảng:

Int max= -1;
for(int i=0;i<n;++i)
   if(check_so_nguyen_to(a[i]))
       if(max == -1)
            max = a[i];
       else if(max < a[i] && max != -1)
            max = a[i];
if(max == -1) 
    Mang ko co so nguyen to
else
    So nguyen to lon nhat trong mang la : max

Bạn đọc rùi tự covert code nha

1 Like

Anh/chị ơi em làm bên danh sách liên kết mà :(((

khác nhau chỉ là cách duyệt các phần tử thôi, đọc hiểu code rùi chuyển qua cho mình sử dụng, mình chỉ đưa ý tưởng xử lý vấn đề thôi, ko code hộ nha

2 Likes

Bạn làm ơn cho đầy đủ toàn bộ đề bài lên đây, bao gồm ví dụ về input và output, mình có thể hiểu ra rất nhiều ý nghĩa từ cái title mà bạn vừa sửa, và không biết nghĩa nào là nghĩa đúng cả.
À, nói thêm, đừng bắt người khác đọc cả một bài code dài dằng dặc.

2 Likes

Dạ e cám ơn anh đã giúp em

Dạ em sẽ rút kinh nghiệm ạ

bool KT_SNT(int n)
{
    if(n < 2) return 0;
    for(int i = 2; i < n; i++)
    {
        if(n%i == 0)
        {
            return 0;
        }
    }
    return 1;
}

int SoNguyenTo_Max(List l)
{
    int maxx = 0;
    for(node *p = l.head; p != NULL; p = p->next)
    {
        if(KT_SNT(p->data) == 1 && p->data > maxx)
        {
            maxx = p->data;
        }
    }
    return maxx;
}

bạn check thử xem

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