Cần sửa giúp lỗi code đếm các số nguyên tố là số tăng giảm

Đề bài: Một số được gọi là số tăng giảm nếu số đó có các chữ số thỏa mãn hoặc tăng dần, hoặc giảm dần từ trái qua phải. Hãy đếm các số nguyên tố là số tăng giảm với số chữ số cho trước.

#include<stdio.h>
#include<math.h>

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

bool tang( int n){
	int arr[20];
	int j , dem = 0 ;
	while(n > 0){
		arr[20] = n%10;
		n/=10;
		j++;
	}
	for( int i = 0 ; j < i ; j++){
		if(arr[i]<=arr[i+1]) return false;
	}
	return true;
}

bool giam( int n){
	int arr[20];
	int j , dem = 0 ;
	while(n > 0){
		arr[20] = n%10;
		n/=10;
		j++;
	}
	for( int i = 0 ; j < i ; j++){
		if(arr[i]>=arr[i+1]) return false;
	}
	return true;
}


int main(){
	int n;
	int dem = 0 ; 
	scanf("%d", &n );
	for( int i = pow(10,n-1) ; i < pow(10,n) ; i++){
		if(ngto(i) && ( tang(i) || giam(i)))
			dem++;
	}
	printf("%d",dem);
	
}

Lỗi gì??? Bị gì thì nói ra, cứ lỗi, ai biết lỗi gì.


arr[20] = n%10; là thế nào? Tạo mảng để gán tất cả các giá trị vào cùng 1 chỗ à? Thế j++ làm gì?

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