Đề bài
Viết chương trình C# liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.
Số tự nhiên n được nhập từ bàn phím.
Lời giải
/** * Chuong trinh liet ke cac so Fibonacci nho hon n la so nguyen to. * * @author kienthuclaptrinh.net */ using System; using System.Collections; namespace KienThucLapTrinhCsharp { class FibonacciNguyenTo { /** * Ham main */ static void Main(string[] args) { int n; Console.Write("Nhap so nguyen duong n = "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Cac so fibonacci nho hon %d va la so nguyen to: ", n); int i = 0; while (fibonacci(i) < n) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { Console.Write("{0} ", fi); } i++; } } /** * Tinh so fibonacci thu n * * @param n: chi so cua day fibonacci tinh tu 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return so fibonacci thu n */ static int fibonacci(int n) { if (n < 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author kienthuclaptrinh.net * @param n: so nguyen duong * @return 1: la so nguyen so, * 0: khong la so nguyen to */ static bool isPrimeNumber(int n) { // so nguyen n < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 int i; int squareRoot = (int) Math.Sqrt(n); for (i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } } }
Kết quả:
Nhap so nguyen duong = 100 Cac so fibonacci nho hon 100 va la so nguyen to: 2 3 5 13 89