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
;

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;