Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to

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

programming
c
14110414 (Minh Sang) March 24, 2015, 2:51am #1

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]; }
ltd (Lê Trần Đạt) April 1, 2015, 1:42pm #2

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

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to

1 Like
HuyX (HUY) March 24, 2015, 4:08am #3

Không biết đúng không, code thử trên sublime chưa test hàm

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to

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); } }
14110414 (Minh Sang) March 24, 2015, 6:55am #4

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

1 Like
14110414 (Minh Sang) March 24, 2015, 6:59am #5

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.

1 Like
HuyX (HUY) March 24, 2015, 7:06am #6

count nghĩa là đếm thôi, prime number là số nguyên tố.

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
em chuyên ngành gì mà k biết thế?

14110414 (Minh Sang) March 24, 2015, 7:13am #7

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.

14110414 (Minh Sang) March 24, 2015, 7:17am #8

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

ltd (Lê Trần Đạt) March 24, 2015, 7:28am #9

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.

HuyX (HUY) March 24, 2015, 7:31am #10
Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
14110414:

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

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
14110414:

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

1 Like
14110414 (Minh Sang) March 24, 2015, 9:04am #11

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; }
HuyX (HUY) April 1, 2015, 1:42pm #12

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ạ

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
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

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
2015-03-24_14-40-15.jpg522×768 106 KB

Ý tưởng đếm số lượng số nguyên tố có trong mảng

  • Đầu tiên bạn phải viết một hàm check để kiểm tra số đó có phải là số nguyên tố hay không. Hàm check sẽ trả về kiểu bool có giá trị true nếu đó là số nguyên tố. Nếu các bạn chưa biết cách kiểm tra một số có phải là số nguyên tố hay không thì có thể xem tại đây.
  • Ta khởi tạo một biến count có giá trị là 0. Tiến hành duyệt hết các phần tử trong mảng nếu có phần tử nào là số nguyên tố thì ta tiến hành tăng giá trị của biến count lên một giá trị.
  • Sau khi kết thúc hàm thì ta trả về giá trị của biến count chính là số lượng số nguyên tố có trong mảng.

Xây dựng hàm đếm số lượng số nguyên tố có trong mảng:

Ta có thể xây dựng các hàm như sau

Code tham khảo

Sau khi chạy chương trình trên ta có kết quả sau

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

Đếm số nguyên tố có trong mảng một chiều các số nguyên bằng C / C++

Trong bài viết này chúng ta sẽ thực hiện chương trình đếm số nguyên tố có trong mảng một chiều các số nguyên bằng C / C++.

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to

Viết hàm de quy đếm xem trong dãy có bao nhiêu số nguyên to
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Mình sẽ thực hiện hai chương trình để đếm với hai ngôn ngữ khác nhau đó là C và C++. Vì vậy các bạn cần có kiến thức cơ bản về hai ngôn ngữ này đã nhé!!

Tổng hợp các bài toán về đệ quy trong C

1. Hàm nhập, xuất mảng đệ quy

void nhapmang(int a[], int n){
if(n==0)
return;
nhapmang(a, n-1);
printf(“\nNhap phan tu %d: “,n-1);
scanf(“%d”,&a[n-1]);
}void xuatmang(int a[], int n){
if(n == 0)
return;
xuatmang(a, n-1);
printf(“%4d”,a[n-1]);
}

2. Hàm xuất mảng ngược

Vd: Mảng a[5]={2, 4, 5, 3, 9} thì ta có mảng ngược là a[5]={9, 3, 5, 4, 2}

void xuatmangnguoc(int a[], int n){
if(n == 0)
return;
printf(“%4d”,a[n-1]);
xuatmangnguoc(a, n-1);
}

3. Tính tổng n

Vd: n = 5 thì ta có S = 1 + 2 + 3 + 4 + 5

//Dung de quy
long tong(int n){
if(n==0)
return 0;
return n + tong(n-1);
}

4. Đếm mảng các số chẵn

Chú thích: Chúng ta sẽ đếm những số chẵn có trong mảng có bao nhiêu số.

int demchan(int a[], int n){
if(n == 0)
return 0;
if(n % 2 == 0)
return 1 + demchan(a,n-1);
return demchan(a,n-1);
}

5. Đếm mảng các số nguyên tố

bool ktnt(int n){
int d=0;
for(int i=1; i< n; i++){
if(n%i==0)
d=d+1;
}
if(d==1)
return true;
return false;
}
int demsonguyento(int a[], int n){
if(n==0)
return 0;
if(ktnt(a[n-1]))
return 1 + demsonguyento(a, n-1);
return demsonguyento(a, n-1);
}

6. Hàm tổng mảng

long tongmang(int a[], int n){
if(n==0)
return 0;
return a[n-1] + tongmang(a,n-1);
}

7. Hàm tổng mảng chẵn

long tongmangchan(int a[], int n){
if(n==0)
return 0;
if(a[n-1] % 2 == 0)
return a[n-1] + tongmangchan(a, n-1);
return tongmangchan(a, n-1);
}

8. Hàm tính tổng các giá trị lớn hơn giá trị đứng trước nó.

Vd: 5, 6, 9, 1, 2 thì ta có S= 6 + 9 + 2 vì 5 < 6 ta lấy 6, 6 < 9 ta lấy 9…

long tonglhdt(int a[], int n){
if(n==0)
return 0;
if(a[n-1] > a[n])
return a[n-1] + tonglhdt(a,n-1);
return tonglhdt(a, n-1);
}

9. Kiểm tra mảng toàn chẵn

bool kttoanchan(int a[], int n){
if(n==0)
return true;
if(a[n-1] % 2 != 0)
return false;
return kttoanchan(a, n-1);
}

10. Hàm tìm max trong mảng

int timmax(int a[], int n){
if(n==1)
return a[0];
if(a[n-1] > timmax(a,n-1))
return a[n-1];
return timmax(a,n-1);
}

11. Tìm vị trí max trong mảng

int timvitrimax(int a[], int n){
if(n==1)
return 0;
if(a[n-1] > a[timmax(a,n-1)])
return n-1;
return timmax(a,n-1);
}

12. Hàm xếp tăng mảng

void sapxeptang(int a[], int n){
if(n==1)
return;
for(int i=0;iif(a[i] > a[n-1]){
int tam = a[i];
a[i]=a[n-1];
a[n-1]=tam;
}
}
sapxeptang(a,n-1);
}

13. Giả xử x1=1, x2 =1, xn=x(n-1) + (n-1)*x(n-2)

Viết hàm tính xn bằng đệ quy.

long tinhdequy(int n){
if(n==1 || n==2)
return 1;
return tinhdequy(n-1) + (n-1)*tinhdequy(n-2);
}

14. Tính số hạng n của dãy Fibonacci sau.

f1=1

f2=1

fn=fn-1 + fn-2, n>=3

long Fibonaci(int n){
if(n==1 || n==2)
return 1;
return Fibonaci(n-1) + Fibonaci(n-2);
}

15. Tìm UCLN của 2 số nguyên dương

int UCLN(int c, int b){
if (c == b)
return c;
if (c > b)
return UCLN(c – b, b);
else
return UCLN(c, b – c);
}

[Đệ Quy C++] viết hàm xuất các số nguyên tố có trong mảng

sử dụng đệ quy , viết hàm xuất tất cả các số nguyên tố có trong mảng ra màn hình

#include
using namespace std;
int songuyento(int n)
{
if(n<2) return 0;
if(n==2) return 1;
for(int i=2;i
if(n%i==0) return 0;
return 1;
}
void xuat(int a[],int n)
{
if(n==0) return;
if(songuyento(a[n])) cout<
n--;
xuat(a,n);
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},n=10;
xuat(a,n);
system("pause");
}
Email ThisBlogThis!Share to TwitterShare to Facebook