Đề bài: Bắt đầu bằng 1 số nguyên bất kỳ (khởi tạo), chương trình sẽ sinh ra 1 dãy các số theo quy tắc sau:
1. Nếu số hiện tại là số chẵn thì lấy nó chia cho 2; ngược lại nếu là số lẻ thì lấy nó nhân với 3 và cộng thêm 1.
2. Lặp lại
Ví dụ: n=3; 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, ...
Hmmm.... khi số bằng 1 thì theo công thức mưa đá Hailstone chuỗi số sẽ lặp đi lặp lại 4,2,1,4,2,1,..
Đây là 1 vòng lặp vô tận nên khi lập trình ví dụ, tôi sẽ cho vòng lặp dừng khi số n = 1
Link tham khảo: https://www.math.hmc.edu/funfacts/ffiles/10008.5.shtml
Bài giải:
#include <stdio.h>
int da(int n){
if (n%2!=0)
return 3*n+1;
else
return n/2;
}
void muaDa(int n){
int c = 0;
while(n>1){
printf("%6d",n);
n = da(n);
c++;
if (c==6){
printf("\n");
c=0;
}
}
printf("%6d",1);
}
int main(){
int n;
printf("Nhap so n :");
scanf("%d",&n);
muaDa(n);
return 0;
}
Xem Video Lap trinh can ban C: Toan hoc vui Mua da HailStone Number