30/09/2018, 16:42

Lỗi hàm đếm số lượng số nguyên tố dùng đệ quy

hàm đếm số lượng số nguyên tố dùng đệ quy. mọi người sửa lỗi giúp minh vs.

int demnt1(int a[], int n)
{
    if (n <= 0)
        return 0;

    for (int h = 2; h < a[n - 1]; h++)
        if (a[n - 1] % h == 0) // số cuối k là số nguyên tố
            return demnt1(a, n - 1);
        else
            return demnt1(a, n - 1) + a[n - 1];
}
Nguyễn Minh Dũng viết 18:47 ngày 30/09/2018

Lỗi chỗ nào vậy Minh Sang?

Lưu ý là Minh Sang không nên đặt tên hàm và tên biến khó hiểu như thế nhé. Nên sửa cách trình bày thành

int demnguyento(int arr[], int n)
{
    if (n <= 0)
        return 0;

    for (int i = 2; i < arr[n - 1]; i++) {
        // số cuối k là số nguyên tố
        if ((arr[n - 1] % i) == 0) {
            return demnguyento(arr, n - 1);
        } else {
            return demnguyento(arr, n - 1) + a[n - 1];
        }
    }
}

Forum mình cũng có nhiều bài nguyên tố rồi, Minh sang xem thử xem

X viết 18:48 ngày 30/09/2018

Không biết đúng không, code thử trên sublime chưa test hàm
Hàm kiểm tra tự viết thử xem.

int count(int a[], int n) {
	if(n<1){
		return 0;
	}
	else{
		return isPrime(a[n-1]) ? count(a, n-1) + 1 : count(a, n-1);
	}
}
Minh Sang viết 18:42 ngày 30/09/2018

em sẽ sẽ gắng sửa cách trình bày.
em cám ơn anh nhiều!

Minh Sang viết 18:59 ngày 30/09/2018

em mới học năm nhất. nên tên hàm của anh viết em không hiểu và mấy từ tiếng anh chắc có lẽ là chuyên ngành em cũng không hiểu. nhưng em sẽ cố gắng.
em cám ơn anh nhiều vì đã giúp em.

X viết 18:58 ngày 30/09/2018

count nghĩa là đếm thôi, prime number là số nguyên tố. em chuyên ngành gì mà k biết thế?

Minh Sang viết 18:56 ngày 30/09/2018

anh ơi sao em cho code anh chạy ra kết quả sai y như code của em viết vậy anh.

Minh Sang viết 18:49 ngày 30/09/2018

isPrime có cùng khai báo hay hay gì không anh. sao em chạy nó báo lỗi

Nguyễn Minh Dũng viết 18:51 ngày 30/09/2018

Anh ghi rõ ràng là anh chỉ sửa lỗi trình bày thôi mà. Còn số nguyên tố em tìm kiếm trong forum đi, nhiều bài lắm rồi.

X viết 18:45 ngày 30/09/2018

anh ơi sao em cho code anh chạy ra kết quả sai y như code của em viết vậy anh.

Vì anh @ltd chỉ thay đổi tên hàm và biến cho dễ nhìn thôi mà.

isPrime có cùng khai báo hay hay gì không anh. sao em chạy nó báo lỗi

đây là hàm kiểm tra một số có phải là số nguyên tố hay không, quá cơ bản nên em tự tìm hiểu nhé.

Minh Sang viết 18:44 ngày 30/09/2018

hàm tìm và đếm số nguyên tố xài vòng lặp em viết đươc. còn viết hàm tìm và đếm số nguyên tố xài “đệ quy” thì em không viết được.

int demnt2( int a[], int n)
{
	int dem = 0; int nto;
	if (n <= 0)return 0;
	for (int i = 0; i < n; i++)
	{
		//kiểm tra xem a[i] có phải số ngtố hay không
		nto = (a[i] < 2) ? 0 : 1;
		for (int j = 2; j < a[i]; j++)
		if (a[i] % j == 0)	//chia hết
		{
			nto = 0;
			break;
		}
		if (nto == 1)		//a[i] là số ngtố
			dem++;
	}
	return dem;
}
X viết 18:46 ngày 30/09/2018

không ngờ là sáng code cũng đúng =)) mấy tuần nay code java nay quay lại C++ code nhìn lạ lạ còn kiểu nữa mà xem chắc k hiểu nên cho đoạn này tham khảo chơi

Bài liên quan
0