Bài tập tính tổng các số nguyên tố bằng đệ quy

cho em hỏi đoạn tính tổng số nguyên tố sai chỗ nào ạ .

#include <stdio.h>
#include <math.h>
int nhn(int a[],int n){
	if(n==0){
		return a[0];
	}else if(n==1){
		return a[0];
	}
	return nhn(a,n-1)+a[n-1];
}
bool ngto(int n){
	if(n<2) return false;
	for(int i = 2 ; i <= sqrt(n);i++){
		if(n%i==0) return false;
	}
	return true;
}
int tong(int a[],int n){
 if(n==1){
		return a[0];
	}
	 if(ngto(a[n-1])==true){
	 	return a[n-1] + tong(a,n-1); 
	 }else{
	 	return 0+tong(a,n-1); 
	 } 
	 	
}
int main(){
	int n;
	int a[100];
	printf("Nhap n :");
	scanf("%d",&n);
	for (int i = 0; i < n; i++)
	{
		printf("Nhap a[%d] = ",i);
		scanf("%d",&a[i]);
	}

	printf("%d ",nhn(a,n));
	printf("%d",tong(a,n));
	return 0;
}

Đầu tiên, cậu có thể cho mọi người biết làm sao cậu biết cậu làm sai không?

1 Like

khi mình nhập mảng 5 phần tử từ 1 —> 5 thì nếu tổng của snt nó phải ra 10 nhưng kết quả lại ra 11

Vậy thì tiếp theo, bạn có biết kết quả trong chương trình của bạn nó tính tổng của những số nào mà lại ra 11 không?

5 Likes

Lý do gì khiến bạn trả về a[0] khi n==1 trong hàm tong???

3 Likes

à mình hiểu r cảm ơn bạn nhiều

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