Bài tập Dãy Số Fibonaci - Nhập môn lập trình | Trường đại học Hồng Đức

Bài tập Dãy Số Fibonaci - Nhập môn lập trình | Trường đại học Hồng Đức được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

BÀI TẬP FIBONACI
BÀI 33. Dãy Số Fibonaci được định nghĩa như sau: s = s =1; s = s +s vơi n>=2. Cho
0 1 n n-1 n-2
số nguyên dương n.(n<=93). Tính số s ?
n
Input Output
8 34
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
int F(int n){
if(n==0||n==1) return 1;
else return F(n-1)+F(n-2);
}
int main(){
int n;
cin>>n;
cout << F(n)<< endl;
return 0;
}
BÀI 34. Dãy Số Fibonaci được định nghĩa như sau: s = s =1; s = s +s vơi n>=2. Cho
0 1 n n-1 n-2
số nguyên dương n.(n<=93). hãy in ra n số fibonacy đầu tiên.
Input Output
8 1 1 2 3 5 8 13 21 34
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
long long fibonacy(long long n)
{ long long f1=1,f2=1,f, i=3;
if(n==1||n==2) return 1;
while (i<=n)
{f=f1+f2;
f1=f2;
f2=f;
i++;
}
return f;
}
int main(){
long long n;
cin>>n;
for(long long i=1;i<=n;i++)
cout << fibonacy(i) <<" ";
return 0;
}
BÀI 35. Cho số n hãy in ra nhữngsố fibonacy nhỏ hơn n.
BÀI LÀM
#include <bits/stdc++.h>
using namespace std;
long long fibonacy(long long n)
{ long long f1=1,f2=1,f, i=3;
if(n==1||n==2) return 1;
while (i<=n)
{f=f1+f2;
f1=f2;
f2=f;
i++;
}
return f;
}
int main(){
long long n;
cin>>n;
long long i=1;
while (fibonacy(i)<=n)
{cout << fibonacy(i) <<" ";
i++;}
return 0;
}
Bài 90. Bài toán. Số Fibonacci:
a) n (n <= 40)Tìm số Fibonacci thứ
b) Tìm các số Fibonacci nhỏ hơn hoặc bằng n.
c) Tìm các số Fibonacci nằm trên đoạn [m, n].
d) Tìm các số vừa là số Fibonacci vừa là số nguyên tố trên đoạn [m, n].
Yêu cầu: Nhập vào số n. Trong file đầu ra ghi 4 kết quả như trên.
BAI5.INP BAI5.OUT
3 40 102334155
1 1 2 3 5 8 13 21 34
5 8 13 21 34
5 13
Bài làm
#include <bits/stdc++.h>
using namespace std;
int nguyenTo(int n) {
if (n < 2) return 0;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int Fibonacci(int n) {
int a1 = 1, a2 = 1;
if (n == 1 || n == 2) return 1;
int i = 3, a;
while (i <= n) {
a = a1 + a2;
a1 = a2;
a2 = a;
i++;
}
return a;
}
int main() {
int m, n, i = 0;
cin >> m >> n;
// So Fibonacci thu n:
cout << Fibonacci(n) << endl;
// So Fibonacci < n:
for (i = 0; i < n; i++) {
if (Fibonacci(i) < n) cout << Fibonacci(i) << " ";
}
cout << endl;
// So Fibonacci nam trong doan [m,n]:
for (i = 0; i < n; i++) {
if (Fibonacci(i) > m && Fibonacci(i) < n)
cout << Fibonacci(i) << " ";
}
cout << endl;
// So Fibonacci vua la so nguyen to doan [m,n]:
i = m;
while (Fibonacci(i) < n) {
int fi = Fibonacci(i);
if(nguyenTo(fi)) {
if (fi > m)
cout << fi << " ";
}
i++;
}
return 0;
}
Bài 13. In ra n số fibonaci đầu tiên
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,x,y,n,i;
a=0;
b=1;
cout << "Nhap n: ";
cin>>n;
cout << n << " phan tu dau tien cua day Fibonacci la: " << endl;
cout << endl;
cout << a << endl;
cout << b << endl;
for(i=1;i<=n-2;i++)
{
x=a+b;
cout << x << endl;
y=a;
a=b;
b=x;
}
return 0;
}
DÃY FIBONACI
#include <bits/stdc++.h>
using namespace std;
//CÁC DẠNG TOÁN VỀ FIBONACI:
//FIBONACI Dang 1: S(0)= S(1) =1; S(n) = S(n-1) +S(n-2) với n>=2
//Nhap day so fibonaci.
long long fb1(int x)
{
long long f1=1,f2=1,f, i=3;
if(x==1||x==2) return 1;
while (i<=x)
{f=f2+f1; f1=f2; f2=f; i++;}
return f;
}
//Xuat day so fibonaci n so dau tien..
void xuat(int x)
{
int i;
for(i=1;i<=x;i++)
cout<<fb1(i)<<" ";
cout<<endl;
}
//In ra những số fibonacy nhỏ hơn n
void xl2(int x)
{
for(int i=0;i<x;i++)
{
if(fb1(i)<x) cout<<fb1(i)<<" ";
}
cout<<endl;
}
//Tìm các số Fibonacci nằm trên đoạn [a, b]
void xl3(int x)
{
int a,b;
cin>>a>>b;
for(int i=0;i<x;i++)
{
if(fb1(i)>=a&&fb1(i)<=b) cout<<fb1(i)<<" ";
}
cout<<endl;
}
//In ra cac so nguyen to trong n so fibonaci dau tien.
bool snt(int p)
{
int dem=0;
for(int i=1;i<=p;i++)
{
if(p%i==0) dem=dem+1;
}
if(dem==2) return true;
else return false;
}
void xl4(int x)
{
for(int i=0;i<x;i++)
{
if(snt(fb1(i))==true) cout<<fb1(i)<<" ";
}
cout<<endl;
}
//In ra cac so chinh phuong cua n so fibonaci dau tien.
bool scp(int x)
{
if(sqrt(x)==int(sqrt(x))) return true;
else return false;
}
void xl5(int x)
{
for(int i=0;i<x;i++)
{
if(scp(fb1(i))==true) cout<<fb1(i)<<" ";
}
cout<<endl;
}
//FIBONACI Dang 2: S(1)= S(2) =1; S(3) = 4; S(n+3)=2S(n+2) +2S(n+1)-S(n) với n>=3
//Nhap day so fibonaci
long long fb2(int x)
{
long long f1=1,f2=1,f3=4, f, i=4;
if(x==1||x==2) return 1;
if(x==3) return 4;
while (i<=x)
{f=2*f3+2*f2-f1; f1=f2; f2=f3; f3=f; i++; }
return f;
}
//Xuat day so fibonaci n phan tu dau tien.
void xuat1(int x)
{
for(int i=1;i<=x;i++){cout<<fb2(i)<<" ";}
cout<<endl;
}
//FIBONACI Dang 3: S(0)=0; S(1)=1; S(2) =2; S(3) = 6; S(n+4)=2S(n+3) +S(n+2)-2S(n+1)-
S(n) với n>=3
//Nhap day so fibonaci
long long fb3(int x)
{
long long f,f0=0, f1=1, f2=2, f3=6, i=4;
if(x==0) return 0; if(x==1) return 1; if(x==2) return 2; if(x==3) return 6;
while (i<=x)
{
f=2*f3+ f2 - 2*f1 - f0;
f0=f1; f1=f2; f2=f3; f3=f; i++;
}
return f;
}
//Xuat day fibonaci cua n so dau tien
void xuat2(int x)
{
for (int i = 0; i<=x;i++)
cout<<fb3(i)<<" ";
cout<<endl;
}
int main()
{
int n;
cin>>n;
xuat(n); xuat1(n); xuat2(n);
xl2(n); xl3(n); xl4(n); xl5(n);
return 0;
}
Một số dãy FIBONACI thường gặp
1. Cho a =a = 1; a = 4; a = 2a + 2a – a
1 2 3 n+3 n+2 n+1 n
;
2. Cho a =0; a = 1; a = 2; a =6; a = 2a + a –2 a – a ;
0 1 2 3 n+4 n+3 n+2 n+1 n
3. Cho a =4; a = a = 9; a = a – 2(a ) – 8a
0 1 2 n+1 n
a
n-1 n
+a
n-1 n-2
;
4. Cho a =3; a = 11; a = 4; a = 2a + 2a – a
0 1 3 n+3 n+2 n+1 n
;
| 1/7

Preview text:

BÀI TẬP FIBONACI
BÀI 33. Dãy Số Fibonaci được định nghĩa như sau: s0= s1 =1; s n = s n-1 +sn-2 vơi n>=2. Cho
số nguyên dương n.(n<=93). Tính số sn ?
Input Output 8 34 BÀI LÀM #include using namespace std; int F(int n){ if(n==0||n==1) return 1; else return F(n-1)+F(n-2); } int main(){ int n; cin>>n;
cout << F(n)<< endl; return 0; }
BÀI 34. Dãy Số Fibonaci được định nghĩa như sau: s0= s1 =1; s n = s n-1 +sn-2 vơi n>=2. Cho
số nguyên dương n.(n<=93). hãy in ra n số fibonacy đầu tiên.
Input Output 8 1 1 2 3 5 8 13 21 34 BÀI LÀM #include using namespace std;
long long fibonacy(long long n) { long long f1=1,f2=1,f, i=3; if(n==1||n==2) return 1; while (i<=n) {f=f1+f2; f1=f2; f2=f; i++; } return f; } int main(){ long long n; cin>>n;
for(long long i=1;i<=n;i++)
cout << fibonacy(i) <<" "; return 0; }
BÀI 35. Cho số n hãy in ra nhữngsố fibonacy nhỏ hơn n. BÀI LÀM #include using namespace std;
long long fibonacy(long long n) { long long f1=1,f2=1,f, i=3; if(n==1||n==2) return 1; while (i<=n) {f=f1+f2; f1=f2; f2=f; i++; } return f; } int main(){ long long n; cin>>n; long long i=1; while (fibonacy(i)<=n)
{cout << fibonacy(i) <<" "; i++;} return 0; }
Bài 90. Bài toán. Số Fibonacci:
a) Tìm số Fibonacci thứ n (n <= 40)
b) Tìm các số Fibonacci nhỏ hơn hoặc bằng n.
c) Tìm các số Fibonacci nằm trên đoạn [m, n].
d) Tìm các số vừa là số Fibonacci vừa là số nguyên tố trên đoạn [m, n].
Yêu cầu: Nhập vào số n. Trong file đầu ra ghi 4 kết quả như trên. BAI5.INP BAI5.OUT 3 40 102334155 1 1 2 3 5 8 13 21 34 5 8 13 21 34 5 13 Bài làm #include using namespace std; int nguyenTo(int n) { if (n < 2) return 0;
for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return 0; } } return 1; } int Fibonacci(int n) { int a1 = 1, a2 = 1;
if (n == 1 || n == 2) return 1; int i = 3, a; while (i <= n) { a = a1 + a2; a1 = a2; a2 = a; i++; } return a; } int main() { int m, n, i = 0; cin >> m >> n; // So Fibonacci thu n:
cout << Fibonacci(n) << endl; // So Fibonacci < n: for (i = 0; i < n; i++) {
if (Fibonacci(i) < n) cout << Fibonacci(i) << " "; } cout << endl;
// So Fibonacci nam trong doan [m,n]: for (i = 0; i < n; i++) {
if (Fibonacci(i) > m && Fibonacci(i) < n)
cout << Fibonacci(i) << " "; } cout << endl;
// So Fibonacci vua la so nguyen to doan [m,n]: i = m; while (Fibonacci(i) < n) { int fi = Fibonacci(i); if(nguyenTo(fi)) { if (fi > m)
cout << fi << " "; } i++; } return 0; }
Bài 13. In ra n số fibonaci đầu tiên #include using namespace std; int main() { long long a,b,x,y,n,i; a=0; b=1; cout << "Nhap n: "; cin>>n;
cout << n << " phan tu dau tien cua day Fibonacci la: " << endl; cout << endl; cout << a << endl; cout << b << endl; for(i=1;i<=n-2;i++) { x=a+b; cout << x << endl; y=a; a=b; b=x; } return 0; } DÃY FIBONACI #include using namespace std;
//CÁC DẠNG TOÁN VỀ FIBONACI:
//FIBONACI Dang 1: S(0)= S(1) =1; S(n) = S(n-1) +S(n-2) với n>=2 //Nhap day so fibonaci. long long fb1(int x) { long long f1=1,f2=1,f, i=3; if(x==1||x==2) return 1; while (i<=x) {f=f2+f1; f1=f2; f2=f; i++;} return f; }
//Xuat day so fibonaci n so dau tien.. void xuat(int x) { int i; for(i=1;i<=x;i++) cout< cout<}
//In ra những số fibonacy nhỏ hơn n void xl2(int x) { for(int i=0;i { if(fb1(i) } cout<}
//Tìm các số Fibonacci nằm trên đoạn [a, b] void xl3(int x) { int a,b; cin>>a>>b; for(int i=0;i {
if(fb1(i)>=a&&fb1(i)<=b) cout< } cout<}
//In ra cac so nguyen to trong n so fibonaci dau tien. bool snt(int p) { int dem=0; for(int i=1;i<=p;i++) { if(p%i==0) dem=dem+1; } if(dem==2) return true; else return false; } void xl4(int x) { for(int i=0;i {
if(snt(fb1(i))==true) cout< } cout<}
//In ra cac so chinh phuong cua n so fibonaci dau tien. bool scp(int x) {
if(sqrt(x)==int(sqrt(x))) return true; else return false; } void xl5(int x) { for(int i=0;i {
if(scp(fb1(i))==true) cout< } cout<}
//FIBONACI Dang 2: S(1)= S(2) =1; S(3) = 4; S(n+3)=2S(n+2) +2S(n+1)-S(n) với n>=3 //Nhap day so fibonaci long long fb2(int x) {
long long f1=1,f2=1,f3=4, f, i=4; if(x==1||x==2) return 1; if(x==3) return 4; while (i<=x)
{f=2*f3+2*f2-f1; f1=f2; f2=f3; f3=f; i++; } return f; }
//Xuat day so fibonaci n phan tu dau tien. void xuat1(int x) {
for(int i=1;i<=x;i++){cout< cout<}
//FIBONACI Dang 3: S(0)=0; S(1)=1; S(2) =2; S(3) = 6; S(n+4)=2S(n+3) +S(n+2)-2S(n+1)- S(n) với n>=3 //Nhap day so fibonaci long long fb3(int x) {
long long f,f0=0, f1=1, f2=2, f3=6, i=4;
if(x==0) return 0; if(x==1) return 1; if(x==2) return 2; if(x==3) return 6; while (i<=x) { f=2*f3+ f2 - 2*f1 - f0;
f0=f1; f1=f2; f2=f3; f3=f; i++; } return f; }
//Xuat day fibonaci cua n so dau tien void xuat2(int x) { for (int i = 0; i<=x;i++) cout< cout<} int main() { int n; cin>>n; xuat(n); xuat1(n); xuat2(n);
xl2(n); xl3(n); xl4(n); xl5(n); return 0; }
Một số dãy FIBONACI thường gặp
1. Cho a1 =a2 = 1; a3= 4; an+3 = 2an+2+ 2an+1 – an;
2. Cho a0 =0; a1 = 1; a2= 2; a3=6; an+4 = 2an+3+ an+2 –2 an+1 – an ;
3. Cho a0 =4; a1 = a2 = 9; an+1 = anan-1 – 2(an+an-1) – 8an-2;
4. Cho a0 =3; a1 = 11; a3= 4; an+3 = 2an+2+ 2an+1 – an;