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

algorithm

(Trần Tấn đạt) #1

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);
}

(明玉) #2

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


(SITUVN.gcd) #3

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é.


(Trần Tấn đạt) #4

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


(Trần Tấn đạt) #5

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


(rogp10) #6

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.


(Trần Tấn đạt) #7

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 ạ


(明玉) #8

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


(Trần Tấn đạt) #9

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


(Anh Tu) #10

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


(Trần Tấn đạt) #11

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


(Anh Tu) #12

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


(明玉) #13

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.


(Trần Tấn đạt) #14

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


(Trần Tấn đạt) #15

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


(Nhật Quang) #16
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?